📄 crc16_r024.asm
字号:
;占用R0 B A 但超高速,24i
CRCH DATA 30H
CRCL DATA 31H
CRCT DATA 32H
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=DATS
;占用:A B @R0=CRCH
;;;;;;;;;;;;;;;;;;;;;;;;
CRC1B:
;计算 CRCA = CRCH xor Dat[i]
MOV A,@R1
XRL A,CRCH
MOV B,A ;CRCH = CRCH xor Dat[i]
;计算 CRCB = (CRCA div 16) xor (CRCA and $0f0)
SWAP A
XRL A,B
MOV CRCH,A
;CrcH:= CrcL xor (CRCT*16+CRCT div 8) xor ((CRCA and $f0) div 8);
MOV R0,#CRCH
ANL A,#0F0H
RL A
XCHD A,@R0 ;A=$21*T CRCT= T*16+T div 8
XCH A,@R0
XRL A,CRCL
XCH A,@R0 ;A= $21*T CRCH= CrcL xor (CRCT*16+CRCT div 8)
MOV CRCL,A
MOV A,B
ANL A,#0F0H
XRL CRCL,A ;CrcL:= (CRCA and $f0) xor ($21*(CRCB));
SWAP A
RL A
XRL CRCH,A
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -