📄 crc.asm
字号:
;************************************************************
; Copyright (C), 2009, CYIT Co., Ltd.
; FileName: CRC
; Description: CRC check
; Author: DSP_GROUP
; Usage: void CRC(int*,int*,int,int)
; Input: XAR0:coded data(InputData)
; XAR1:decoded CRC bits(CrcPoly)
; T0: Length of coded data(CodeOutlen)
; T1: Length of CRC bits(CrcPolylen)
; Return: NO
; Altered Registers: AC0-AC2,T2
; Others: 8 bits of AC0 LSB is CRCcheck bit
; History:
; <time> <version > <desc>
; 2009/3/9 1.0 build this moudle
;************************************************************
.mmregs
.text
.def _CRC
_CRC:
PSH mmap(@ST0_55)
PSH mmap(@ST1_55)
PSH mmap(@ST2_55)
PSH mmap(@ST3_55)
PSHBOTH AC0
PSHBOTH AC1
PSH T0
PSH T1
PSH T2
PSHBOTH XAR0
PSHBOTH XAR1
BCLR SXMD
XOR AC0
XOR AC1
AND #0FH, T0, T2
MOV mmap(T0)<< #-4, AC1
SUB #1, AC1
MOV AC1, mmap(BRC0)
MOV #0, AC0 ;store crcbit
MOV #15, BRC1
RPTB check1_end ;start outerloop
MOV *AR0+, AC1 ;read inputdata
SFTL AC1, T1
OR AC1,AC0
RPTB check1_end ;start inloop
AND #1, AC0, T0 ;judge whether or not to XOR
XCCPART CHK, T0> #0
||XOR *AR1, AC0
check1_end: SFTL AC0, #-1
BCC CRC_end, T2 == #0 ;judge whether the reminder of CodeOutlen equal 0
SUB #1, T2
MOV T2,BRC0
||MOV *AR0,AC1
SFTL AC1, T1
OR AC1,AC0
RPTB check2_end
AND #1,AC0,T0
XCCPART CHK2, T0 > #0
||XOR *AR1, AC0
check2_end: SFTL AC0, #-1
CRC_end:
POPBOTH XAR1
POPBOTH XAR0
POP T2
POP T1
POP T0
POPBOTH AC1
POPBOTH AC0
POP mmap(@ST3_55)
POP mmap(@ST2_55)
POP mmap(@ST1_55)
POP mmap(@ST0_55)
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -