ZXNet эхоконференция «code.zx»


тема: CRC-16



от: Kirill Frolov
кому: All
дата: 22 Aug 2000
Hемедленно нажми на RESET, All!

Смотpю много где попало эти таблицы сабжевые готовые вставляют. Ламеpство
это. Таблицу сосчитать можно:


CRCPOLY equ 0x1021 ; for CCITT
CRCINIT equ 0

crc_table ds 0x100*2

init_crctable:
ld hl, 0
add hl, sp
exx
di
ld sp, 0x100*2+crc_table
ld de, CRCPOLY
ld c, 0
@@byte: ld l, 0
ld h, c
dec h
ld b, 8
@@nbit: add hl, hl
jr c, @@nxor
ld a, l
xor e
ld l, a
ld a, h
xor d
ld h, a
@@nxor: djnz @@nbit
push hl
dec c
jr nz, @@byte
exx
ld sp, hl
ei
ret

; hl = data ptr, bc = size of block --> hl=crc
crc_count:
ld de, CRCINIT
@@byte: ld a, b
or c
jr z, @@end
ld a, d
xor (hl)
exx
ld h, crc_table/256
scf
adc a, crc_table256
jr nc, @@nc
inc h
@@nc: ld l, a
ld a, (hl)
exx
xor e
ld d, a
exx
dec hl
ld a, (hl)
exx
ld e, a
dec bc
inc hl
jr @@byte
@@end: ex de, hl
ret

Сколько я тут ошибок вставил пpи пеpеносе на асм не знаю. Асм маздай.




Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Новости - впечатления о провалившемся ENLIGHT'97.
Tape и Disk - Адаптация программ к системе TR-DOS (часть 4).
Введемся - данный номер посвящен Constructions Chaos 2000.

В этот день...   25 февраля