|
发表于 2020-3-8 23:05:11
|
显示全部楼层
云南省昭通市
.版本 2
.子程序 CRC16_IBM, 整数型, , CRC-16标准查表算法
.参数 欲校验的整数, 字节集
.局部变量 CRC, 整数型
.局部变量 table, 整数型, , "256"
.局部变量 i, 整数型
' Name: CRC-16/IBM X16+X15+X2+1
' Poly: 0x8005
' lnit: 0x0000
' Refin: Ture
' Refout: Ture
' Xorout: 0x0000
' Note: CRC-16,CRC-16/ARC,CRC-16LHA
' —————————————————输入、输出反转、结果不异或————————————————————
.变量循环首 (0, 255, 1, i)
CRC = i
.变量循环首 (1, 8, 1, )
.如果 (位与 (CRC, 1) ≠ 0)
CRC = 位异或 (右移 (CRC, 1), 40961) ' // 多项式 “0xA001”= Reverse 0x8005
.否则
CRC = 右移 (CRC, 1)
.如果结束
.变量循环尾 ()
table [i + 1] = CRC
.变量循环尾 ()
CRC = 0 ' 初始值“0x0000”
.变量循环首 (1, 取字节集长度 (欲校验的整数), 1, i)
CRC = 位异或 (右移 (CRC, 8), table [位异或 (欲校验的整数 [i], 位与 (CRC, 255)) + 1])
.变量循环尾 ()
返回 (CRC)
|
|