📄 crc16_zcynew2.asm
字号:
;
CRCH DATA 30H
CRCL DATA 31H
CRCA DATA 32H
CRCB DATA 33H
ORG 0H
BEGIN:
MOV CRCH,#0H
MOV CRCL,#0H
MOV R1,#34H
MOV 34H,#01BH
MOV 35H,#0E2H
MOV 36H,#0DBH
ACALL CRC1B
INC R1
ACALL CRC1B
INC R1
ACALL CRC1B
SJMP BEGIN
;;;;;;;;;;;;;;;;;;;;;;;;
;半字节CRC校验程序
;CRC结果 : CRCH CRCL
;数据指针: R1
;占用:B A R0 R2
;;;;;;;;;;;;;;;;;;;;;;;;
CRC1B:
;保存现场
; PUSH ACC
; PUSH B
; MOV A,R0
; PUSH ACC
;计算 CRCA = CRCH xor Dat[i]
MOV A,@R1
XRL A,CRCH
MOV CRCA,A
;计算 CRCB = (CRCA div 16) xor (CRCA and $0f0)
MOV B,A
SWAP A
XRL A,B
ANL A,#0FH
MOV CRCB,A
;CrcH:= CrcL xor (CRCB*16) xor (((CRCA and $f0) xor CRCB )div 8) ;
SWAP A
XRL A,CRCL
MOV CRCH,A ;CRCH = CrcL xor (CRCB*16);
MOV A,CRCA
ANL A,#0F0H
MOV CRCL,A ;CRCL=(CRCA and $f0)
XRL A,CRCB
RL A
SWAP A
ANL A,#1FH ;DIV 8
XRL CRCH,A ;
;CrcL:= (CRCA and $f0) xor ($21*(CRCB));
MOV A,CRCB
MOV B,A
SWAP A
CLR C
RLC A
XRL A,B ;($21*(TempH))
XRL CRCL,A
;恢复现场
; POP ACC
; MOV R0,A
; POP B
; POP ACC
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -