📄 crc16.asm
字号:
;enter p2 r1 - data address
;out: r3,r2 crc16(hi lo),CHECK ERROR CY=1, OK CY=0
crc16: mov r3,#0ffh
mov r2,#0ffh
mov r1,#1
movx a,@r1
mov r7,a
inc r7
inc r7
dec r1
crcloop:movX a,@r1
inc r1
xrl a,r3
push acc
mov dptr,#crc_hi
movc a,@a+dptr
xrl a,r2
mov r3,a
pop acc
mov dptr,#crc_lo
movc a,@a+dptr
mov r2,a
djnz r7,crcloop
mov a,r1
mov r0,a
movx a,@r1
xrl a,r3
jnz crcl1
inc r1
movx a,@r1
xrl a,r2
jnz crcl1
clr c
sjmp crcl2
crcl1: setb c
crcl2: ret
crc_hi: db 000h, 0C1h, 081h, 040h, 001h, 0C0h, 080h, 041h, 001h, 0C0h
db 080h, 041h, 000h, 0C1h, 081h, 040h, 001h, 0C0h, 080h, 041h
db 000h, 0C1h, 081h, 040h, 000h, 0C1h, 081h, 040h, 001h, 0C0h
db 080h, 041h, 001h, 0C0h, 080h, 041h, 000h, 0C1h, 081h, 040h
db 000h, 0C1h, 081h, 040h, 001h, 0C0h, 080h, 041h, 000h, 0C1h
db 081h, 040h, 001h, 0C0h, 080h, 041h, 001h, 0C0h, 080h, 041h
db 000h, 0C1h, 081h, 040h, 001h, 0C0h, 080h, 041h, 000h, 0C1h
db 081h, 040h, 000h, 0C1h, 081h, 040h, 001h, 0C0h, 080h, 041h
db 000h, 0C1h, 081h, 040h, 001h, 0C0h, 080h, 041h, 001h, 0C0h
db 080h, 041h, 000h, 0C1h, 081h, 040h, 000h, 0C1h, 081h, 040h
db 001h, 0C0h, 080h, 041h, 001h, 0C0h, 080h, 041h, 000h, 0C1h
db 081h, 040h, 001h, 0C0h, 080h, 041h, 000h, 0C1h, 081h, 040h
db 000h, 0C1h, 081h, 040h, 001h, 0C0h, 080h, 041h, 001h, 0C0h
db 080h, 041h, 000h, 0C1h, 081h, 040h, 000h, 0C1h, 081h, 040h
db 001h, 0C0h, 080h, 041h, 000h, 0C1h, 081h, 040h, 001h, 0C0h
db 080h, 041h, 001h, 0C0h, 080h, 041h, 000h, 0C1h, 081h, 040h
db 000h, 0C1h, 081h, 040h, 001h, 0C0h, 080h, 041h, 001h, 0C0h
db 080h, 041h, 000h, 0C1h, 081h, 040h, 001h, 0C0h, 080h, 041h
db 000h, 0C1h, 081h, 040h, 000h, 0C1h, 081h, 040h, 001h, 0C0h
db 080h, 041h, 000h, 0C1h, 081h, 040h, 001h, 0C0h, 080h, 041h
db 001h, 0C0h, 080h, 041h, 000h, 0C1h, 081h, 040h, 001h, 0C0h
db 080h, 041h, 000h, 0C1h, 081h, 040h, 000h, 0C1h, 081h, 040h
db 001h, 0C0h, 080h, 041h, 001h, 0C0h, 080h, 041h, 000h, 0C1h
db 081h, 040h, 000h, 0C1h, 081h, 040h, 001h, 0C0h, 080h, 041h
db 000h, 0C1h, 081h, 040h, 001h, 0C0h, 080h, 041h, 001h, 0C0h
db 080h, 041h, 000h, 0C1h, 081h, 040h
crc_lo: db 000h, 0C0h, 0C1h, 001h, 0C3h, 003h, 002h, 0C2h, 0C6h, 006h
db 007h, 0C7h, 005h, 0C5h, 0C4h, 004h, 0CCh, 00Ch, 00Dh, 0CDh
db 00Fh, 0CFh, 0CEh, 00Eh, 00Ah, 0CAh, 0CBh, 00Bh, 0C9h, 009h
db 008h, 0C8h, 0D8h, 018h, 019h, 0D9h, 01Bh, 0DBh, 0DAh, 01Ah
db 01Eh, 0DEh, 0DFh, 01Fh, 0DDh, 01Dh, 01Ch, 0DCh, 014h, 0D4h
db 0D5h, 015h, 0D7h, 017h, 016h, 0D6h, 0D2h, 012h, 013h, 0D3h
db 011h, 0D1h, 0D0h, 010h, 0F0h, 030h, 031h, 0F1h, 033h, 0F3h
db 0F2h, 032h, 036h, 0F6h, 0F7h, 037h, 0F5h, 035h, 034h, 0F4h
db 03Ch, 0FCh, 0FDh, 03Dh, 0FFh, 03Fh, 03Eh, 0FEh, 0FAh, 03Ah
db 03Bh, 0FBh, 039h, 0F9h, 0F8h, 038h, 028h, 0E8h, 0E9h, 029h
db 0EBh, 02Bh, 02Ah, 0EAh, 0EEh, 02Eh, 02Fh, 0EFh, 02Dh, 0EDh
db 0ECh, 02Ch, 0E4h, 024h, 025h, 0E5h, 027h, 0E7h, 0E6h, 026h
db 022h, 0E2h, 0E3h, 023h, 0E1h, 021h, 020h, 0E0h, 0A0h, 060h
db 061h, 0A1h, 063h, 0A3h, 0A2h, 062h, 066h, 0A6h, 0A7h, 067h
db 0A5h, 065h, 064h, 0A4h, 06Ch, 0ACh, 0ADh, 06Dh, 0AFh, 06Fh
db 06Eh, 0AEh, 0AAh, 06Ah, 06Bh, 0ABh, 069h, 0A9h, 0A8h, 068h
db 078h, 0B8h, 0B9h, 079h, 0BBh, 07Bh, 07Ah, 0BAh, 0BEh, 07Eh
db 07Fh, 0BFh, 07Dh, 0BDh, 0BCh, 07Ch, 0B4h, 074h, 075h, 0B5h
db 077h, 0B7h, 0B6h, 076h, 072h, 0B2h, 0B3h, 073h, 0B1h, 071h
db 070h, 0B0h, 050h, 090h, 091h, 051h, 093h, 053h, 052h, 092h
db 096h, 056h, 057h, 097h, 055h, 095h, 094h, 054h, 09Ch, 05Ch
db 05Dh, 09Dh, 05Fh, 09Fh, 09Eh, 05Eh, 05Ah, 09Ah, 09Bh, 05Bh
db 099h, 059h, 058h, 098h, 088h, 048h, 049h, 089h, 04Bh, 08Bh
db 08Ah, 04Ah, 04Eh, 08Eh, 08Fh, 04Fh, 08Dh, 04Dh, 04Ch, 08Ch
db 044h, 084h, 085h, 045h, 087h, 047h, 046h, 086h, 082h, 042h
db 043h, 083h, 041h, 081h, 080h, 040h
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -