|
动态CRC按位循环冗余码编译码程序可用于通讯数据的加密及解密和校验。
;-------8位右移动态按位循环冗余码编码程序--------------
CRC8:
PUSH B
MOV B,#8
CRC8_LOOP:
LCALL CRC8B
DJNZ B,CRC8_LOOP
POP B
RET
CRC8B:
PUSH PSW
PUSH ACC
RLC A
XRL A,CRC
RRC A
MOV A,CRC
JNC CRC8B_NEXT
XRL A,#18H;CRC=X8+X5+X4+1
CRC8B_NEXT:
RRC A
MOV CRC,A
POP ACC
POP PSW
RET
;-------8位右移动态按位循环冗余码译码程序---------------
CRC8F:
PUSH B
MOV B,#08H
CRC8F_LOOP:
RLC A
LCALL CRC8BF
DJNZ B,CRC8F_LOOP
POP B
RET
CRC8BF:
。。。。
RET
;-------16位右移动态按位循环冗余码编码程序------------------
CRC16:
PUSH B
MOV B,#8
CRC16_LOOP:
LCALL CRC16B
DJNZ B,CRC16_LOOP
POP B
RET
CRC16B:
PUSH PSW
PUSH ACC
RLC A
XRL A,CRCL
RRC A
MOV F0,C
MOV A,CRCH
JNC CRC16B_NEXT1
XRL A,#08H;CRC=X16+X12+X5+1
CRC16B_NEXT1:
RRC A
MOV CRCH,A
MOV A,CRCL
JNB F0,CRC16B_NEXT2
XRL A,#10H;CRC=X16+X12+X5+1
CRC16B_NEXT2:
RRC A
MOV CRCL,A
POP ACC
POP PSW
RET
;-------16位右移动态按位循环冗余码校验译码程序------------------
CRC16F:
。。。。。
RET |
|