📄 crc16_z1.asm
字号:
;
CRCH DATA 30H
CRCL DATA 31H
ORG 0H
BEGIN:
MOV CRCH,#0H
MOV CRCL,#0H
MOV R1,#32H
MOV 32H,#82H
MOV 33H,#1AH
MOV 34H,#2BH
ACALL CRC1B
mov R1,#33H
ACALL CRC1B
mov R1,#34H
ACALL CRC1B
SJMP BEGIN
;;;;;;;;;;;;;;;;;;;;;;;;
;半字节CRC校验程序
;CRC结果 : CRCH CRCL
;数据指针: R1
;占用:B A R0
;;;;;;;;;;;;;;;;;;;;;;;;
CRC1B:
;保存现场
; PUSH ACC
; PUSH B
; MOV A,R0
; PUSH ACC
;CRC左移四位
MOV A,CRCH
SWAP A
MOV CRCH,A
MOV A,CRCL
SWAP A
MOV CRCL,A
MOV R0,#CRCH
XCHD A,@R0
MOV B,A
ANL A,#0F0H
MOV CRCL,A
;DA ^ *PTR / 16
MOV A,@R1
SWAP A
XRL A,B
ANL A,#0FH
;查表 = DA~ * 1021H
MOV B,A
SWAP A
MOV C,ACC.7
MOV ACC.0,C
XRL A,CRCH
SWAP A
MOV CRCH,A
MOV A,B
SWAP A
CLR C
RLC A
ADD A,B
XRL A,CRCL
SWAP A
MOV CRCL,A
;;;;;;;后半字节
;CRC左移四位
MOV R0,#CRCH
XCHD A,@R0
MOV B,A
ANL A,#0F0H
MOV CRCL,A
;DA ^ * (PTR & 0fh)
MOV A,@R1
XRL A,B
ANL A,#0FH
;查表 = DA~ * 1021H Crc^ [Da~]
MOV B,A
SWAP A
CLR C
RLC A
ADD A,B
XRL CRCL,A
MOV A,B
SWAP A
MOV C,ACC.7
MOV ACC.0,C
XRL CRCH,A
;恢复现场
; POP ACC
; MOV R0,A
; POP B
; POP ACC
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -