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

📄 at88scxx.asm

📁 Atmel公司推出了最新的加密芯片AT88SC0104C~25616C系列
💻 ASM
📖 第 1 页 / 共 3 页
字号:
        MOV R0,A ;DATAIN
        INC R4
        MOV A,R4
        MOV DPTR,#PASSWORD_TABLE
        MOVC A,@A+DPTR
        MOV @R0,A
        MOV R2,#05H
        LCALL CRYPTO_DATA_REPEAT
        MOV A,R5
        ADD A,#0CH
        MOV R0,A
        MOV A,R5
        ADD A,#2EH
        MOV R1,A
        MOV A,@R0
        MOV @R1,A
        MOV A,R5
        ADD A,#0BH
        MOV R0,A ;DATAIN
        INC R4
        MOV A,R4
        MOV DPTR,#PASSWORD_TABLE
        MOVC A,@A+DPTR
        MOV @R0,A
        MOV R2,#05H
        LCALL CRYPTO_DATA_REPEAT
        MOV A,R5
        ADD A,#0CH
        MOV R0,A
        MOV A,R5
        ADD A,#2FH
        MOV R1,A
        MOV A,@R0
        MOV @R1,A
        LCALL WRITE0104;发送字节数+命令+00+Lower_Addr+Number
        RET

WRITE_USER_ZONE:
        MOV A,R5
        ADD A,#0BH
        MOV R0,A ;DATAIN
        MOV @R0,#00H
        MOV R2,#05H
        LCALL CRYPTO_DATA_REPEAT

        MOV A,R5
        ADD A,#0BH
        MOV R0,A ;DATAIN
        MOV A,R5
        ADD A,#08H
        MOV R1,A
        MOV A,@R1
        MOV @R0,A;LOWER ADDR BYTE
        LCALL CRYPTO_DATA
        LCALL OUTPUT_STAGE
        MOV A,R5
        ADD A,#0BH
        MOV R0,A ;DATAIN
        MOV @R0,#00H
        MOV R2,#05H
        LCALL CRYPTO_DATA_REPEAT
        MOV A,R5
        ADD A,#0BH
        MOV R0,A ;DATAIN
        MOV A,R5
        ADD A,#09H
        MOV R1,A
        MOV A,@R1          ;N  不可随意动
        DEC R1
        SUBB A,@R1
        INC A
        MOV @R0,A
        MOV R7,A;N 4.1
        LCALL CRYPTO_DATA
        LCALL OUTPUT_STAGE
WRITE_USER_ZONE_REPEAT:
        MOV A,R5
        ADD A,#0AH
        MOV R0,A
        MOV A,@R0
        MOV R0,A
        MOV A,R5
        ADD A,#28H
        MOV R1,A
        MOV R2,#10H
CHANGE_DATA:
        MOV A,@R0
        MOV @R1,A
        INC R0
        INC R1
        DJNZ R2 ,CHANGE_DATA
        MOV A,R5
        ADD A,#28H
        MOV R4,A
CRYPTO_BYTE:
        MOV A,R5
        ADD A,#0BH
        MOV R0,A ;DATAIN
        MOV @R0,#00H
        MOV R2,#05H
        LCALL CRYPTO_DATA_REPEAT
        MOV A,R5
        ADD A,#0CH
        MOV R1,A
        MOV B,R4
        MOV R0,B
        MOV A,@R0
        MOV B,A     ;B是明文
        XRL A,@R1
        MOV @R0,A    ;密文送回0F0H

        MOV A,R5
        ADD A,#0BH
        MOV R1,A
        MOV @R1,B     ;明文送入
        LCALL CRYPTO_DATA
        LCALL OUTPUT_STAGE
        INC R4
        DJNZ R7,CRYPTO_BYTE ;4.1
        MOV A,R5
        ADD A,#27H
        MOV R1,A  ;ADDR

        DEC R1     ;24 25 26  PUSH A
        MOV A,@R1
        PUSH A

        DEC R1
        MOV A,@R1
        PUSH A

        DEC R1
        MOV A,@R1
        PUSH A

        MOV @R1,#0B0H ;24
        INC R1
        MOV @R1,#00H  ;25

        MOV A,R5
        ADD A,#08H
        MOV R0,A
        MOV A,@R0
        INC R1
        MOV @R1,A  ;26   ;ADDR

        INC R0
        MOV A,@R0
        DEC R0
        SUBB A,@R0
        INC A
        INC R1
        MOV @R1,A

        ADD A,#04H
        MOV R0,A  ;得发送字节数
        MOV A,R5
        ADD A,#24H
        MOV R1,A  ;发送字节数首地址ADDR
        LCALL SEND_BYTE
        MOV A,R5
        ADD A,#24H
        MOV R1,A  ;ADDR
        POP A
        MOV @R1,A
        INC R1    ;25
        POP A
        MOV @R1,A
        INC R1    ;26
        POP A
        MOV @R1,A
LCALL SEND_CHECKSUM
LCALL DELAY_5MS
LCALL SET_USER_ZONE
        RET

WRITE0104:
        MOV R2,#80H
WRITE_SMSTART:
        MOV A,R5
        ADD A,#28H
        MOV R0,A   ;;连写数拒个数
        MOV A,@R0
        MOV R0,A
        MOV A,R5
        ADD A,#29H ;存放命令首地址
        MOV R1,A
        LCALL SMSTART
WR012:	MOV A,@R1         ;
	MOV B,#08H
WR011:	CLR SDA
	JNB ACC.7,WR010
	SETB SDA
WR010:	NOP
	NOP
	SETB SCL
	NOP
	NOP
	CLR SCL
        NOP
	RL A
	DJNZ B,WR011
	SETB SDA
        NOP
        NOP
        SETB SCL
	NOP
	NOP
WR01W:	JNB SDA,WR01W2;WRITE_SMSTART
WR01W1: DJNZ R2,WRITE_SMSTART
WR01W2:	CLR SCL
	NOP
        NOP
        INC R1
	DJNZ R0,WR012
        LCALL SMSTOP
	RET

SEND_CHECKSUM:
        MOV A,R5
        ADD A,#01H
        MOV R0,A
        MOV A,@R0
        ANL A,#40H
        CJNE A,#40H,CHECKSUM_REQUIRE
        RET
CHECKSUM_REQUIRE:
        MOV A,R5
        ADD A,#28H ;28
        MOV R0,A
        MOV @R0,#06H

        INC R0   ;29
        MOV @R0,#0B4H

        INC R0   ;2A
        MOV @R0,#02H

        INC R0   ;2B
        MOV @R0,#00H

        INC R0   ;2C
        MOV @R0,#02H
;共连写字节数
        MOV A,R5
        ADD A,#0BH ;28
        MOV R1,A
        MOV @R1,#00H
        MOV R2,#0FH
        LCALL CRYPTO_DATA_REPEAT
        MOV A,R5
        ADD A,#0CH
        MOV R0,A
        MOV A,R5
        ADD A,#2DH
        MOV R1,A
        MOV A,@R0
        MOV @R1,A;CK0
        MOV A,R5
        ADD A,#0BH
        MOV R1,A
        MOV @R1,#00H
        MOV R2,#05H
        LCALL CRYPTO_DATA_REPEAT
        MOV A,R5
        ADD A,#0CH
        MOV R0,A
        MOV A,R5
        ADD A,#2EH
        MOV R1,A
        MOV A,@R0
        MOV @R1,A;CK1
        LCALL WRITE0104;(0F)+28-(0F)+2F:发送字节数(06H)+B2H+02H+00H+02H+(2 Byte CheckSum)
        RET

GC_CI_Q0_CALCULATE:    ;占用 A B R1 R2 R3 R4 R5 R6 R7;CI0
MOV A,R5
ADD A,#28H
MOV R4,A    ;CI_ADDR
MOV A,R5
ADD A,#02H
MOV R1,A
MOV A,@R1
MOV R6,A

MOV R2,#04H;4.1
CAL_4TIME:

MOV R7,#02H ;PART CI 用2CI连算
CAL_CI_2TIME:
MOV A,R4
MOV R1,A
MOV B,@R1
MOV A,R5
ADD A,#0BH
MOV R0,A ;CI(i)送入DATAIN
MOV @R0,B
LCALL CRYPTO_DATA  ;CALCULATE
LCALL OUTPUT_STAGE ;A B R0 R1 R3
LCALL CRYPTO_DATA  ;CALCULATE 4.1
LCALL OUTPUT_STAGE ;A B R0 R1 R3  4.1
LCALL CRYPTO_DATA  ;CALCULATE 4.1
LCALL OUTPUT_STAGE ;A B R0 R1 R3  4.1
MOV A,R4 ;CI所在的地址加1
INC A
MOV R4,A
DJNZ R7,CAL_CI_2TIME

MOV A,R6
MOV R1,A
MOV B,@R1
MOV A,R5
ADD A,#0BH
MOV R0,A ;DATAIN
MOV @R0,B
LCALL CRYPTO_DATA  ;CALCULATE
LCALL OUTPUT_STAGE
MOV A,R6
INC A
MOV R6,A

DJNZ R2,CAL_4TIME;4.1
RET
;;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
GENERATE_CH:
MOV A,R5
ADD A,#0BH
MOV R0,A ;DATAIN
MOV @R0,#00H
MOV R2,#06H
FIRST_CH:
LCALL CRYPTO_DATA  ;CALCULATE
LCALL OUTPUT_STAGE
DJNZ R2,FIRST_CH

MOV A,R5
ADD A,#0CH
MOV R0,A ;GPA_BYTE
MOV B,@R0;CH0

MOV A,R5
ADD A,#28H
MOV R1,A
MOV @R1,B
;GENERATE_Q1-7:  ;REPAET(7) CLOCK 0X00;CH1
MOV A,R5
ADD A,#29H
MOV R4,A  ;存放的ADDR
MOV R7,#07H ;4.1
GER_7BYTE:
MOV R2,#07H ;CH1-CH7
Q11:  ;DATAIN 仍是#00H
LCALL CRYPTO_DATA  ;CALCULATE
LCALL OUTPUT_STAGE
DJNZ R2,Q11
MOV A,R5
ADD A,#0CH
MOV R0,A ;GPA_BYTE
MOV B,@R0
MOV A,R4
MOV R1,A
MOV @R1,B
MOV A,R4
INC A
MOV R4,A
DJNZ R7,GER_7BYTE ;4.1
RET

Read_AAC:
        MOV A,R5
        ADD A,#28H
        MOV R0,A
        MOV A,R5
        ADD A,#30H
        MOV R1,A

        MOV R2,#08H
MOV_CI: MOV A,@R0
        MOV @R1,A
        INC R0
        INC R1
        DJNZ R2,MOV_CI

        MOV A,R5
        ADD A,#28H
        MOV R0,A;得8命令系统地址
        MOV B,A
        MOV @R0,#0B6H    ;B2+00+LOW_ADDR+NUMBER+密文出口地址

        INC R0
        MOV @R0,#00H

        MOV A,R5
        ADD A,#01H
        MOV R1,A
        MOV A,@R1
        ANL A,#0F0H
        ADD A,#50H
        INC R0
        MOV @R0,A

        MOV A,#08H
        INC R0
        MOV @R0,A

        MOV A,R5
        ADD A,#28H
        INC R0     ;读取存放地址
        MOV @R0,A
        LCALL READ

        MOV A,R5
        ADD A,#0BH
        MOV R0,A
        MOV @R0,#00H ;DATAIN
        MOV R2,#05H  ;TIMES
LH0:    LCALL CRYPTO_DATA
        LCALL OUTPUT_STAGE
        DJNZ R2,LH0

        MOV A,R5
        ADD A,#0BH
        MOV R0,A
        MOV A,R5    ;
        ADD A,#01H
        MOV R1,A
        MOV A,@R1
        ANL  A,#0F0H ;
        ADD  A,#50H
        MOV @R0,A    ;DATAIN
        MOV R2,#01H  ;TIMES
LH1:    LCALL CRYPTO_DATA
        LCALL OUTPUT_STAGE
        DJNZ R2,LH1

        MOV A,R5
        ADD A,#0BH
        MOV R0,A
        MOV @R0,#00H ;DATAIN
        MOV R2,#05H  ;TIMES
LH2:    LCALL CRYPTO_DATA
        LCALL OUTPUT_STAGE
        DJNZ R2,LH2

        MOV A,R5
        ADD A,#0BH
        MOV R0,A
        MOV @R0,#08H  ;DATAIN
        MOV R2, #01H  ;TIMES
CH3:    LCALL CRYPTO_DATA
        LCALL OUTPUT_STAGE
        DJNZ R2,CH3

        MOV R6,#28H
        MOV R4,#08H
ENC4B:  MOV A,R5
        ADD A,#0BH
        MOV R0,A
        MOV A,R5  ;
        ADD A,R6  ;
        MOV R1,A  ;
        MOV A,@R1 ;
        MOV @R0,A     ;DATAIN
        MOV R2, #01H  ;TIMES
CH4:    LCALL CRYPTO_DATA
        LCALL OUTPUT_STAGE
        DJNZ R2,CH4

        MOV A,R5
        ADD A,#0BH
        MOV R0,A
        MOV @R0,#00H ;DATAIN
        MOV R2,#05H  ;TIMES
CH5:    LCALL CRYPTO_DATA
        LCALL OUTPUT_STAGE
        DJNZ R2,CH5

        INC  R6
        DJNZ R4,ENC4B

Output: MOV A,R5
        ADD A,#28H
        MOV R0,A
        MOV A,R5
        ADD A,#30H
        MOV R1,A

        MOV R3,#00H
        MOV R2,#08H
SUBB_CI:MOV A,@R0
        CLR C
        SUBB A,@R1
        JNZ CI_ERROR
        INC R0
        INC R1
        DJNZ R2,SUBB_CI

        MOV  A,R5
        ADD  A,#28H
        MOV  R0,A
        MOV  A,@R0
        RET
CI_ERROR:
        MOV  A,#55H
        RET


Read_PAC:
        MOV A,R5
        ADD A,#28H
        MOV R0,A;得8命令系统地址
        MOV B,A
        MOV @R0,#0B6H    ;B2+00+LOW_ADDR+NUMBER+密文出口地址

        INC R0
        MOV @R0,#00H

        MOV A,R5
        ADD A,#01H
        MOV R1,A
        MOV A,@R1
        ANL A,#0FH
        MOV B,#08H
        MUL AB
        ADD A,#0B0H
        INC R0
        MOV @R0,A

        MOV A,#01H
        INC R0
        MOV @R0,A

        MOV A,R5
        ADD A,#28H
        INC R0     ;读取存放地址
        MOV @R0,A
        LCALL READ

        MOV A,R5
        ADD A,#0BH
        MOV R0,A
        MOV @R0,#00H ;DATAIN
        MOV R2,#05H  ;TIMES
KH0:    LCALL CRYPTO_DATA
        LCALL OUTPUT_STAGE
        DJNZ R2,KH0

        MOV A,R5
        ADD A,#0BH
        MOV R0,A
        MOV A,R5    ;
        ADD A,#01H
        MOV R1,A
        MOV A,@R1
        ANL A,#0FH
        MOV B,#08H
        MUL AB
        ADD A,#0B0H
        MOV @R0,A    ;DATAIN
        MOV R2,#01H  ;TIMES
KH1:    LCALL CRYPTO_DATA
        LCALL OUTPUT_STAGE
        DJNZ R2,KH1

        MOV A,R5
        ADD A,#0BH
        MOV R0,A
        MOV @R0,#00H ;DATAIN
        MOV R2,#05H  ;TIMES
KH2:    LCALL CRYPTO_DATA
        LCALL OUTPUT_STAGE
        DJNZ R2,KH2

        MOV A,R5
        ADD A,#0BH
        MOV R0,A
        MOV @R0,#01H  ;DATAIN
        MOV R2, #01H  ;TIMES
KH3:    LCALL CRYPTO_DATA
        LCALL OUTPUT_STAGE
        DJNZ R2,KH3

        MOV A,R5
        ADD A,#0CH
        MOV R0,A
        MOV A,@R0
        MOV R1,A;
        MOV A,R5
        ADD A,#28H
        MOV R0,A
        MOV A,@R0
        XRL A,R1;;
        MOV @R0,A

        MOV A,R5
        ADD A,#0BH
        MOV R0,A
        MOV A,R5  ;
        ADD A,#28H;
        MOV R1,A  ;
        MOV A,@R1 ;
        MOV @R0,A     ;DATAIN
        MOV R2, #01H  ;TIMES
KH4:    LCALL CRYPTO_DATA
        LCALL OUTPUT_STAGE
        DJNZ R2,KH4

        MOV A,R5
        ADD A,#0BH
        MOV R0,A
        MOV @R0,#00H ;DATAIN
        MOV R2,#05H  ;TIMES
KH5:    LCALL CRYPTO_DATA
        LCALL OUTPUT_STAGE
        DJNZ R2,KH5

OutputK:MOV  A,R5
        ADD  A,#28H
        MOV  R0,A
        MOV  A,@R0

        RET

;--------DELAY_MS---------
DELAY_MS:MOV R7,#0FFH
    LOOP:nop
         nop
         DJNZ R7,LOOP
         RET
;------------------
DELAY_5MS:
        LCALL DELAY_MS
        LCALL DELAY_MS
        LCALL DELAY_MS
        LCALL DELAY_MS
        LCALL DELAY_MS
        LCALL DELAY_MS
        LCALL DELAY_MS
        LCALL DELAY_MS
        RET

END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -