CRC 循环冗余校验(CCITT-16)
START
MOVLW
DATAe
MOVWF ADDR
;将[e 00]余式表首地址DATAe 存入ADDR SWAPF BYTEa ,0ANDLW 0FH ;求e 和e 指定的[e 00]余式高字节的相对地址ADDWF
ADDR ,1
;取其绝对地址,存入ADDR MOVF
ADDR ,0
;把这一绝对地址再存入W
CALL TABLE ;查表,返回时h e 00放
W 中
MOVWF RESULTh ;把
h e 00
存
RESULTh
MOVLW 16ADDWF ADDR ,0;求e 指定的[e 00]
式低字节的绝对地址CALL TABLE ;查表,返回时l e 00放W 中
MOVWF RESULTl ;把l e 00存入RESUL MOVLW DATAf MOVWF ADDR ;将[f 00]余式表首
址DATAf 存入ADDR
MOVF BYTEa ,0ANDLW
0FH
;求f 和f 指定的[f 0
余式高字节的相对址
ADDWF ADDR ,1;取其绝对地址,存ADDR
MOVF ADDR ,0;把这一绝对地址再存W
CALL TABLE ;查表,返回时h f 00放
W 中
XORWF RESULTh ,0;h e
00与h f
00异或,
h a 00,存入W XORWF BYTEb ,0;h a 00与b 异或,h abc ,存入W
MOVF BYTEa ;h abc 存入BYTEa
MOVLW 16ADDWF ADDR ,0;求f 指定的[f 00]式低字节的绝对地址CALL
TABLE
;查表,返回时l f 00放W 中。