⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mscrc32.a51

📁 mstar 776 开发的车载dvd
💻 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 + -