📄 at88scxx.asm
字号:
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 + -