📄 mscrc32.a51
字号:
ENTRY MACRO symbol
PUBLIC symbol
symbol:
ENDM
NAME msCRC32
?PR?msCRC32 SEGMENT CODE
?DT?msCRC32 SEGMENT DATA
EXTRN CODE (?C?LNOT)
RSEG ?DT?msCRC32
g_u32CRC: DS 4
RSEG ?PR?msCRC32
g_au32CRCTable:
DB 000H,000H,000H,000H ; long
DB 077H,007H,030H,096H ; long
DB 0EEH,00EH,061H,02CH ; long
DB 099H,009H,051H,0BAH ; long
DB 007H,06DH,0C4H,019H ; long
DB 070H,06AH,0F4H,08FH ; long
DB 0E9H,063H,0A5H,035H ; long
DB 09EH,064H,095H,0A3H ; long
DB 00EH,0DBH,088H,032H ; long
DB 079H,0DCH,0B8H,0A4H ; long
DB 0E0H,0D5H,0E9H,01EH ; long
DB 097H,0D2H,0D9H,088H ; long
DB 009H,0B6H,04CH,02BH ; long
DB 07EH,0B1H,07CH,0BDH ; long
DB 0E7H,0B8H,02DH,007H ; long
DB 090H,0BFH,01DH,091H ; long
DB 01DH,0B7H,010H,064H ; long
DB 06AH,0B0H,020H,0F2H ; long
DB 0F3H,0B9H,071H,048H ; long
DB 084H,0BEH,041H,0DEH ; long
DB 01AH,0DAH,0D4H,07DH ; long
DB 06DH,0DDH,0E4H,0EBH ; long
DB 0F4H,0D4H,0B5H,051H ; long
DB 083H,0D3H,085H,0C7H ; long
DB 013H,06CH,098H,056H ; long
DB 064H,06BH,0A8H,0C0H ; long
DB 0FDH,062H,0F9H,07AH ; long
DB 08AH,065H,0C9H,0ECH ; long
DB 014H,001H,05CH,04FH ; long
DB 063H,006H,06CH,0D9H ; long
DB 0FAH,00FH,03DH,063H ; long
DB 08DH,008H,00DH,0F5H ; long
DB 03BH,06EH,020H,0C8H ; long
DB 04CH,069H,010H,05EH ; long
DB 0D5H,060H,041H,0E4H ; long
DB 0A2H,067H,071H,072H ; long
DB 03CH,003H,0E4H,0D1H ; long
DB 04BH,004H,0D4H,047H ; long
DB 0D2H,00DH,085H,0FDH ; long
DB 0A5H,00AH,0B5H,06BH ; long
DB 035H,0B5H,0A8H,0FAH ; long
DB 042H,0B2H,098H,06CH ; long
DB 0DBH,0BBH,0C9H,0D6H ; long
DB 0ACH,0BCH,0F9H,040H ; long
DB 032H,0D8H,06CH,0E3H ; long
DB 045H,0DFH,05CH,075H ; long
DB 0DCH,0D6H,00DH,0CFH ; long
DB 0ABH,0D1H,03DH,059H ; long
DB 026H,0D9H,030H,0ACH ; long
DB 051H,0DEH,000H,03AH ; long
DB 0C8H,0D7H,051H,080H ; long
DB 0BFH,0D0H,061H,016H ; long
DB 021H,0B4H,0F4H,0B5H ; long
DB 056H,0B3H,0C4H,023H ; long
DB 0CFH,0BAH,095H,099H ; long
DB 0B8H,0BDH,0A5H,00FH ; long
DB 028H,002H,0B8H,09EH ; long
DB 05FH,005H,088H,008H ; long
DB 0C6H,00CH,0D9H,0B2H ; long
DB 0B1H,00BH,0E9H,024H ; long
DB 02FH,06FH,07CH,087H ; long
DB 058H,068H,04CH,011H ; long
DB 0C1H,061H,01DH,0ABH ; long
DB 0B6H,066H,02DH,03DH ; long
DB 076H,0DCH,041H,090H ; long
DB 001H,0DBH,071H,006H ; long
DB 098H,0D2H,020H,0BCH ; long
DB 0EFH,0D5H,010H,02AH ; long
DB 071H,0B1H,085H,089H ; long
DB 006H,0B6H,0B5H,01FH ; long
DB 09FH,0BFH,0E4H,0A5H ; long
DB 0E8H,0B8H,0D4H,033H ; long
DB 078H,007H,0C9H,0A2H ; long
DB 00FH,000H,0F9H,034H ; long
DB 096H,009H,0A8H,08EH ; long
DB 0E1H,00EH,098H,018H ; long
DB 07FH,06AH,00DH,0BBH ; long
DB 008H,06DH,03DH,02DH ; long
DB 091H,064H,06CH,097H ; long
DB 0E6H,063H,05CH,001H ; long
DB 06BH,06BH,051H,0F4H ; long
DB 01CH,06CH,061H,062H ; long
DB 085H,065H,030H,0D8H ; long
DB 0F2H,062H,000H,04EH ; long
DB 06CH,006H,095H,0EDH ; long
DB 01BH,001H,0A5H,07BH ; long
DB 082H,008H,0F4H,0C1H ; long
DB 0F5H,00FH,0C4H,057H ; long
DB 065H,0B0H,0D9H,0C6H ; long
DB 012H,0B7H,0E9H,050H ; long
DB 08BH,0BEH,0B8H,0EAH ; long
DB 0FCH,0B9H,088H,07CH ; long
DB 062H,0DDH,01DH,0DFH ; long
DB 015H,0DAH,02DH,049H ; long
DB 08CH,0D3H,07CH,0F3H ; long
DB 0FBH,0D4H,04CH,065H ; long
DB 04DH,0B2H,061H,058H ; long
DB 03AH,0B5H,051H,0CEH ; long
DB 0A3H,0BCH,000H,074H ; long
DB 0D4H,0BBH,030H,0E2H ; long
DB 04AH,0DFH,0A5H,041H ; long
DB 03DH,0D8H,095H,0D7H ; long
DB 0A4H,0D1H,0C4H,06DH ; long
DB 0D3H,0D6H,0F4H,0FBH ; long
DB 043H,069H,0E9H,06AH ; long
DB 034H,06EH,0D9H,0FCH ; long
DB 0ADH,067H,088H,046H ; long
DB 0DAH,060H,0B8H,0D0H ; long
DB 044H,004H,02DH,073H ; long
DB 033H,003H,01DH,0E5H ; long
DB 0AAH,00AH,04CH,05FH ; long
DB 0DDH,00DH,07CH,0C9H ; long
DB 050H,005H,071H,03CH ; long
DB 027H,002H,041H,0AAH ; long
DB 0BEH,00BH,010H,010H ; long
DB 0C9H,00CH,020H,086H ; long
DB 057H,068H,0B5H,025H ; long
DB 020H,06FH,085H,0B3H ; long
DB 0B9H,066H,0D4H,009H ; long
DB 0CEH,061H,0E4H,09FH ; long
DB 05EH,0DEH,0F9H,00EH ; long
DB 029H,0D9H,0C9H,098H ; long
DB 0B0H,0D0H,098H,022H ; long
DB 0C7H,0D7H,0A8H,0B4H ; long
DB 059H,0B3H,03DH,017H ; long
DB 02EH,0B4H,00DH,081H ; long
DB 0B7H,0BDH,05CH,03BH ; long
DB 0C0H,0BAH,06CH,0ADH ; long
DB 0EDH,0B8H,083H,020H ; long
DB 09AH,0BFH,0B3H,0B6H ; long
DB 003H,0B6H,0E2H,00CH ; long
DB 074H,0B1H,0D2H,09AH ; long
DB 0EAH,0D5H,047H,039H ; long
DB 09DH,0D2H,077H,0AFH ; long
DB 004H,0DBH,026H,015H ; long
DB 073H,0DCH,016H,083H ; long
DB 0E3H,063H,00BH,012H ; long
DB 094H,064H,03BH,084H ; long
DB 00DH,06DH,06AH,03EH ; long
DB 07AH,06AH,05AH,0A8H ; long
DB 0E4H,00EH,0CFH,00BH ; long
DB 093H,009H,0FFH,09DH ; long
DB 00AH,000H,0AEH,027H ; long
DB 07DH,007H,09EH,0B1H ; long
DB 0F0H,00FH,093H,044H ; long
DB 087H,008H,0A3H,0D2H ; long
DB 01EH,001H,0F2H,068H ; long
DB 069H,006H,0C2H,0FEH ; long
DB 0F7H,062H,057H,05DH ; long
DB 080H,065H,067H,0CBH ; long
DB 019H,06CH,036H,071H ; long
DB 06EH,06BH,006H,0E7H ; long
DB 0FEH,0D4H,01BH,076H ; long
DB 089H,0D3H,02BH,0E0H ; long
DB 010H,0DAH,07AH,05AH ; long
DB 067H,0DDH,04AH,0CCH ; long
DB 0F9H,0B9H,0DFH,06FH ; long
DB 08EH,0BEH,0EFH,0F9H ; long
DB 017H,0B7H,0BEH,043H ; long
DB 060H,0B0H,08EH,0D5H ; long
DB 0D6H,0D6H,0A3H,0E8H ; long
DB 0A1H,0D1H,093H,07EH ; long
DB 038H,0D8H,0C2H,0C4H ; long
DB 04FH,0DFH,0F2H,052H ; long
DB 0D1H,0BBH,067H,0F1H ; long
DB 0A6H,0BCH,057H,067H ; long
DB 03FH,0B5H,006H,0DDH ; long
DB 048H,0B2H,036H,04BH ; long
DB 0D8H,00DH,02BH,0DAH ; long
DB 0AFH,00AH,01BH,04CH ; long
DB 036H,003H,04AH,0F6H ; long
DB 041H,004H,07AH,060H ; long
DB 0DFH,060H,0EFH,0C3H ; long
DB 0A8H,067H,0DFH,055H ; long
DB 031H,06EH,08EH,0EFH ; long
DB 046H,069H,0BEH,079H ; long
DB 0CBH,061H,0B3H,08CH ; long
DB 0BCH,066H,083H,01AH ; long
DB 025H,06FH,0D2H,0A0H ; long
DB 052H,068H,0E2H,036H ; long
DB 0CCH,00CH,077H,095H ; long
DB 0BBH,00BH,047H,003H ; long
DB 022H,002H,016H,0B9H ; long
DB 055H,005H,026H,02FH ; long
DB 0C5H,0BAH,03BH,0BEH ; long
DB 0B2H,0BDH,00BH,028H ; long
DB 02BH,0B4H,05AH,092H ; long
DB 05CH,0B3H,06AH,004H ; long
DB 0C2H,0D7H,0FFH,0A7H ; long
DB 0B5H,0D0H,0CFH,031H ; long
DB 02CH,0D9H,09EH,08BH ; long
DB 05BH,0DEH,0AEH,01DH ; long
DB 09BH,064H,0C2H,0B0H ; long
DB 0ECH,063H,0F2H,026H ; long
DB 075H,06AH,0A3H,09CH ; long
DB 002H,06DH,093H,00AH ; long
DB 09CH,009H,006H,0A9H ; long
DB 0EBH,00EH,036H,03FH ; long
DB 072H,007H,067H,085H ; long
DB 005H,000H,057H,013H ; long
DB 095H,0BFH,04AH,082H ; long
DB 0E2H,0B8H,07AH,014H ; long
DB 07BH,0B1H,02BH,0AEH ; long
DB 00CH,0B6H,01BH,038H ; long
DB 092H,0D2H,08EH,09BH ; long
DB 0E5H,0D5H,0BEH,00DH ; long
DB 07CH,0DCH,0EFH,0B7H ; long
DB 00BH,0DBH,0DFH,021H ; long
DB 086H,0D3H,0D2H,0D4H ; long
DB 0F1H,0D4H,0E2H,042H ; long
DB 068H,0DDH,0B3H,0F8H ; long
DB 01FH,0DAH,083H,06EH ; long
DB 081H,0BEH,016H,0CDH ; long
DB 0F6H,0B9H,026H,05BH ; long
DB 06FH,0B0H,077H,0E1H ; long
DB 018H,0B7H,047H,077H ; long
DB 088H,008H,05AH,0E6H ; long
DB 0FFH,00FH,06AH,070H ; long
DB 066H,006H,03BH,0CAH ; long
DB 011H,001H,00BH,05CH ; long
DB 08FH,065H,09EH,0FFH ; long
DB 0F8H,062H,0AEH,069H ; long
DB 061H,06BH,0FFH,0D3H ; long
DB 016H,06CH,0CFH,045H ; long
DB 0A0H,00AH,0E2H,078H ; long
DB 0D7H,00DH,0D2H,0EEH ; long
DB 04EH,004H,083H,054H ; long
DB 039H,003H,0B3H,0C2H ; long
DB 0A7H,067H,026H,061H ; long
DB 0D0H,060H,016H,0F7H ; long
DB 049H,069H,047H,04DH ; long
DB 03EH,06EH,077H,0DBH ; long
DB 0AEH,0D1H,06AH,04AH ; long
DB 0D9H,0D6H,05AH,0DCH ; long
DB 040H,0DFH,00BH,066H ; long
DB 037H,0D8H,03BH,0F0H ; long
DB 0A9H,0BCH,0AEH,053H ; long
DB 0DEH,0BBH,09EH,0C5H ; long
DB 047H,0B2H,0CFH,07FH ; long
DB 030H,0B5H,0FFH,0E9H ; long
DB 0BDH,0BDH,0F2H,01CH ; long
DB 0CAH,0BAH,0C2H,08AH ; long
DB 053H,0B3H,093H,030H ; long
DB 024H,0B4H,0A3H,0A6H ; long
DB 0BAH,0D0H,036H,005H ; long
DB 0CDH,0D7H,006H,093H ; long
DB 054H,0DEH,057H,029H ; long
DB 023H,0D9H,067H,0BFH ; long
DB 0B3H,066H,07AH,02EH ; long
DB 0C4H,061H,04AH,0B8H ; long
DB 05DH,068H,01BH,002H ; long
DB 02AH,06FH,02BH,094H ; long
DB 0B4H,00BH,0BEH,037H ; long
DB 0C3H,00CH,08EH,0A1H ; long
DB 05AH,005H,0DFH,01BH ; long
DB 02DH,002H,0EFH,08DH ; long
RSEG ?PR?msCRC32
USING 0
;
; void msCRC32_Init(void);
;
ENTRY msCRC32_Init
MOV A, #0FFH
MOV g_u32CRC+00H, A
MOV g_u32CRC+01H, A
MOV g_u32CRC+02H, A
MOV g_u32CRC+03H, A
RET
;
; U32 msCRC32_GetResult(void);
;
ENTRY msCRC32_GetResult
MOV R4, g_u32CRC+00H
MOV R5, g_u32CRC+01H
MOV R6, g_u32CRC+02H
MOV R7, g_u32CRC+03H
LJMP ?C?LNOT
;
; void msCRC32_Update(const U8 xdata *pu8Data, U16 u16Size);
;
ENTRY _msCRC32_Update
MOV A, R5
JZ CRC32_NO_FIX_SIZE_FOR_DJNZ
INC R4
CRC32_NO_FIX_SIZE_FOR_DJNZ:
MOV R0, g_u32CRC+00H
MOV R1, g_u32CRC+01H
MOV R2, g_u32CRC+02H
MOV R3, g_u32CRC+03H
CRC32_LOOP:
MOV DPH, R6
MOV DPL, R7
MOVX A, @DPTR
XRL A, R3
MOV B, #04H
MUL AB
ADD A, #LOW (g_au32CRCTable)
MOV DPL, A
MOV A, B
ADDC A, #HIGH (g_au32CRCTable)
MOV DPH, A
MOV A, #03H
MOVC A, @A+DPTR
XRL A, R2
MOV R3, A
MOV A, #02H
MOVC A, @A+DPTR
XRL A, R1
MOV R2, A
MOV A, #01H
MOVC A, @A+DPTR
XRL A, R0
MOV R1, A
CLR A
MOVC A, @A+DPTR
MOV R0, A
INC R7
MOV A, R7
JNZ CRC32_LOOP_CHECK
INC R6
CRC32_LOOP_CHECK:
DJNZ R5, CRC32_LOOP
DJNZ R4, CRC32_LOOP
MOV g_u32CRC+00H, R0
MOV g_u32CRC+01H, R1
MOV g_u32CRC+02H, R2
MOV g_u32CRC+03H, R3
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -