📄 crc16_zcynew.asm
字号:
;
CRCH DATA 30H
CRCL DATA 31H
ORG 0H
BEGIN:
MOV CRCH,#0H
MOV CRCL,#0H
MOV R1,#32H
MOV 32H,#01BH
MOV 33H,#0E2H
MOV 34H,#0DBH
ACALL CRC1B
mov R1,#33H
ACALL CRC1B
mov R1,#34H
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 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 CRCH,A ;CRCH = CrcL xor (Temp*16+Temp div 8);
MOV A,R0
ANL A,#0F0H
MOV CRCL,A ;CRCL=(db and $f0)
SWAP A
CLR C
RLC A ;DIV 8
XRL CRCH,A ;
MOV A,R6
MOV B,A
SWAP A
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 + -