📄 crc16_zcynew1.asm
字号:
;
CRCH DATA 30H
CRCL DATA 31H
CRC_H DATA 32H
CRC_L DATA 33H
CRCTAB EQU 1000H
ORG 0H
BEGIN:
MOV CRCH,#0H
MOV CRCL,#0H
MOV CRC_H,#0H
MOV CRC_L,#0H
MOV R1,#34H
MOV 34H,#01BH
MOV 35H,#0E2H
MOV 36H,#0DBH
ACALL CRC1BTA
ACALL CRC1B
INC R1
ACALL CRC1BTA
ACALL CRC1B
INC R1
ACALL CRC1BTA
ACALL CRC1B
SJMP BEGIN
;;;;;;;;;;;;;;;;;;;;;;;;
;半字节CRC校验程序
;CRC结果 : CRCH CRCL
;数据指针: R1
;CRC结果指针:R0 = #CRCH
;占用:B A R0
;;;;;;;;;;;;;;;;;;;;;;;;
CRC1B:
;保存现场
; PUSH ACC
; PUSH B
; MOV A,R0
; PUSH ACC
;计算 R0 = da = CRCH xor Dat[i]
MOV A,@R1
XRL A,CRCH
MOV R0,A
;计算 R6 = Temp = (db div 16) xor (db and $0f0)
MOV B,A
SWAP A
XRL A,B
ANL A,#0FH
MOV CRCH,A ;MOV R6,A
;CrcH:= CrcL xor (Temp*16+Temp div 8) xor ((db and $f0) div 8)
SWAP A
MOV C,ACC.7
MOV ACC.0,C ;Temp*16+Temp div 8
XRL A,CRCL
MOV CRCL,CRCH ;
MOV CRCH,A ;CRCH = CrcL xor (Temp*16+Temp div 8);
MOV A,R0
ANL A,#0F0H
MOV R0,A ;R0= DB /8
SWAP A
CLR C
RLC A ;DIV 8
XRL CRCH,A ;
MOV A,CRCL
MOV B,A
SWAP A
RLC A
XRL A,B ;($21*(TempH))
XRL A,R0
MOV CRCL,A
;恢复现场
; POP ACC
; MOV R0,A
; POP B
; POP ACC
RET
CRC1BTA:
MOV A,@R1
XRL A,CRC_H
MOV B,A
MOV DPTR,#CRCTAB
MOVC A,@A+DPTR
XRL A,CRC_L
MOV CRC_H,A
MOV A,B
MOV DPTR,#CRCTAB+256
MOVC A,@A+DPTR
MOV CRC_L,A
RET
ORG 1000H
DB 000H 010H 020H 030H 040H 050H 060H 070H 081H 091H 0a1H 0b1H 0c1H 0d1H 0e1H 0f1H
DB 012H 002H 032H 022H 052H 042H 072H 062H 093H 083H 0b3H 0a3H 0d3H 0c3H 0f3H 0e3H
DB 024H 034H 004H 014H 064H 074H 044H 054H 0a5H 0b5H 085H 095H 0e5H 0f5H 0c5H 0d5H
DB 036H 026H 016H 006H 076H 066H 056H 046H 0b7H 0a7H 097H 087H 0f7H 0e7H 0d7H 0c7H
DB 048H 058H 068H 078H 008H 018H 028H 038H 0c9H 0d9H 0e9H 0f9H 089H 099H 0a9H 0b9H
DB 05aH 04aH 07aH 06aH 01aH 00aH 03aH 02aH 0dbH 0cbH 0fbH 0ebH 09bH 08bH 0bbH 0abH
DB 06cH 07cH 04cH 05cH 02cH 03cH 00cH 01cH 0edH 0fdH 0cdH 0ddH 0adH 0bdH 08dH 09dH
DB 07eH 06eH 05eH 04eH 03eH 02eH 01eH 00eH 0ffH 0efH 0dfH 0cfH 0bfH 0afH 09fH 08fH
DB 091H 081H 0b1H 0a1H 0d1H 0c1H 0f1H 0e1H 010H 000H 030H 020H 050H 040H 070H 060H
DB 083H 093H 0a3H 0b3H 0c3H 0d3H 0e3H 0f3H 002H 012H 022H 032H 042H 052H 062H 072H
DB 0b5H 0a5H 095H 085H 0f5H 0e5H 0d5H 0c5H 034H 024H 014H 004H 074H 064H 054H 044H
DB 0a7H 0b7H 087H 097H 0e7H 0f7H 0c7H 0d7H 026H 036H 006H 016H 066H 076H 046H 056H
DB 0d9H 0c9H 0f9H 0e9H 099H 089H 0b9H 0a9H 058H 048H 078H 068H 018H 008H 038H 028H
DB 0cbH 0dbH 0ebH 0fbH 08bH 09bH 0abH 0bbH 04aH 05aH 06aH 07aH 00aH 01aH 02aH 03aH
DB 0fdH 0edH 0ddH 0cdH 0bdH 0adH 09dH 08dH 07cH 06cH 05cH 04cH 03cH 02cH 01cH 00cH
DB 0efH 0ffH 0cfH 0dfH 0afH 0bfH 08fH 09fH 06eH 07eH 04eH 05eH 02eH 03eH 00eH 01eH
DB 000H 021H 042H 063H 084H 0a5H 0c6H 0e7H 008H 029H 04aH 06bH 08cH 0adH 0ceH 0efH
DB 031H 010H 073H 052H 0b5H 094H 0f7H 0d6H 039H 018H 07bH 05aH 0bdH 09cH 0ffH 0deH
DB 062H 043H 020H 001H 0e6H 0c7H 0a4H 085H 06aH 04bH 028H 009H 0eeH 0cfH 0acH 08dH
DB 053H 072H 011H 030H 0d7H 0f6H 095H 0b4H 05bH 07aH 019H 038H 0dfH 0feH 09dH 0bcH
DB 0c4H 0e5H 086H 0a7H 040H 061H 002H 023H 0ccH 0edH 08eH 0afH 048H 069H 00aH 02bH
DB 0f5H 0d4H 0b7H 096H 071H 050H 033H 012H 0fdH 0dcH 0bfH 09eH 079H 058H 03bH 01aH
DB 0a6H 087H 0e4H 0c5H 022H 003H 060H 041H 0aeH 08fH 0ecH 0cdH 02aH 00bH 068H 049H
DB 097H 0b6H 0d5H 0f4H 013H 032H 051H 070H 09fH 0beH 0ddH 0fcH 01bH 03aH 059H 078H
DB 088H 0a9H 0caH 0ebH 00cH 02dH 04eH 06fH 080H 0a1H 0c2H 0e3H 004H 025H 046H 067H
DB 0b9H 098H 0fbH 0daH 03dH 01cH 07fH 05eH 0b1H 090H 0f3H 0d2H 035H 014H 077H 056H
DB 0eaH 0cbH 0a8H 089H 06eH 04fH 02cH 00dH 0e2H 0c3H 0a0H 081H 066H 047H 024H 005H
DB 0dbH 0faH 099H 0b8H 05fH 07eH 01dH 03cH 0d3H 0f2H 091H 0b0H 057H 076H 015H 034H
DB 04cH 06dH 00eH 02fH 0c8H 0e9H 08aH 0abH 044H 065H 006H 027H 0c0H 0e1H 082H 0a3H
DB 07dH 05cH 03fH 01eH 0f9H 0d8H 0bbH 09aH 075H 054H 037H 016H 0f1H 0d0H 0b3H 092H
DB 02eH 00fH 06cH 04dH 0aaH 08bH 0e8H 0c9H 026H 007H 064H 045H 0a2H 083H 0e0H 0c1H
DB 01fH 03eH 05dH 07cH 09bH 0baH 0d9H 0f8H 017H 036H 055H 074H 093H 0b2H 0d1H 0f0H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -