crc8.a51
来自「8位沉余CRC校验算法,8051汇编语言编写。」· A51 代码 · 共 67 行
A51
67 行
NAME CRC8
?PR?_crc8ccitt?CRC8 SEGMENT CODE
PUBLIC _crc8ccitt
RSEG ?PR?_crc8ccitt?CRC8
_crc8ccitt:
USING 0
;***********************************************************************
; The following snippet of code was taken from 8052.com (and modified)
;***********************************************************************
; Calculate CRC-8 Values. Uses The CCITT-8 Polynomial, Expressed As
; X^8 + X^5 + X^4 + 1
; Description:
; Calculates Value In Acc Into The Running CRC In 'B', Using The
; Calculation Method (Slower But Smaller).
;
; Entry Requirements:
; Acc Has Value To Add To CRC
; 'B' Contains Running CRC Value
;
; On Exit:
; 'B' Has Updated CRC Value
;
; Affected:
; PSW.CY, B
;
; Stack:
; 3 Bytes, Not Including Called Routines
;
; Comments:
; None
;
push acc ; Save Acc
push b
push 0 ; Save R0
push acc ; Save Value
mov r0,#8 ; Number Bits In Byte
mov b,R7
mov a,R5;
lp1: xrl a,b ; Calculate CRC
rrc a ; Move To Carry
mov a,b ; Get The Last CRC Value
jnc lp2 ; Skip If Data == 0
xrl a,#18h ; Update The CRC Value
;
lp2: rrc a ; Position The New CRC
mov b,a ; Store The New CRC
pop acc ; Get The Remaining Bits
rr a ; Position The Next Bit
push acc ; Save The Remaining Bits
djnz r0,lp1 ; Repeat For 8 Bits
;
MOV R7,b
pop acc ; Clean Up Stack
pop 0 ; Recover R0
pop b
pop acc ; Recover Acc
?C0001:
RET
END
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?