Форум программистов, компьютерный форум CyberForum.ru

Вычисление контрольной суммы - C++

Войти
Регистрация
Восстановить пароль

Показать сообщение отдельно
AntonN
Сообщений: n/a
08.08.2006, 18:05     Вычисление контрольной суммы
Всем Привет!

У меня проблема с вычислением CRC16. Есть небольшое объяснение и примеры, но как они получились не понимаю....

CRC is calculated over data bytes of the message (start and end of message characters are excluded). CRC is initialised to 0000. Two examples of messages with checksum:

CRC-16:
1A 32 12 34 56 0D 38 43
1A 33 12 34 56 0D 39 BF

1 и 6 байты не считаются... т.е. из 32 12 34 56 сумма получается 38 43

Есть еще программа на ассемблере которая вычисляет эту сумму, но, к сожалению, его я не знаю...

Here is our crc-program (Motorola 6809 assembly language)

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
***********************************************
CRC_O EQU * program updates crc-sum
* CRC_D (2 bytes) with character in A-reg.
CRC_G EQU $A001
***********************************************
 
DSCT
CRC_D RMB 2 crc-sum
PSCT 
PSHS D,X
* char to stack
PSHS A
* crc to D
LDD CRC_D
LDX #8
REPEAT
LSRA msb of crc
EORB S char
BITB #1
IF <EQ> THEN.S
* b0s same before shift
EORB S restore of B
RORB
ELSE.S
* b0s not same before shift
EORB S restore of B
RORB
EORA #CRC_G!>8
EORB #CRC_G!.$FF
ENDI
LSR S char
LEAX -1,X
UNTIL <EQ>
* char has been processed
STD CRC_D
LEAS 1,S
PULS D,X,PC
* 8*35+44(+JSR) us 324(+JSR) us
Помогите, плиз, ОООЧЧЕНЬ надо...

Заранее благодарен,
Антон
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 05:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru