📄 at88scxx.asm
字号:
NOP
NOP
NOP
CLR SCL
NOP
NOP
NOP
SETB SCL
NOP
NOP
NOP
CLR SCL
NOP
NOP
NOP
SETB SCL
NOP
NOP
NOP
CLR SCL
NOP
NOP
NOP
SETB SCL
NOP
NOP
NOP
CLR SCL
NOP
NOP
NOP
SETB SDA
NOP
NOP
NOP
SETB SCL
NOP
NOP
NOP
CLR SDA
NOP
NOP
NOP
NOP
CLR SCL
NOP
NOP
NOP
RET
;---------SMSTOP-------------
SMSTOP: CLR SCL ;SMSTOP
NOP
NOP
NOP
CLR SDA
NOP
NOP
NOP
SETB SCL
NOP
NOP
NOP
SETB SDA
NOP
NOP
NOP
RET
;%%%%%%%%%%%%%%%%%%%%CRYPTO_BLOCK%%%%%%%%%%%%%%%%
CRYPTO_BLOCK:
CRYPTO_BLOCK_INITIAL: ;A OR GPAOI OUTPUT
MOV A,R5
ADD A,#0BH
MOV R0,A ;DATAIN
BYTE_DEFINITION:
R_PARAMETER_DEFINITION: ;4:0 BIT
S_PARAMETER_DEFINITION: ;7 BIT
T_PARAMETER_DEFINITION: ;5 BIT 7:3
RESET_STATUS:
MOV B,#1DH
CLR_IN:
MOV @R0,#00H
INC R0
DJNZ B,CLR_IN
RET
CRYPTO_DATA: ;I=0,I++,I<4
MOV A,R5
ADD A,#0BH
MOV R0,A ;DATAIN
MOV A,@R0 ;MOV R0,#0B0H ;DATAIN ;MOV @R0,A
INC R0 ;MOV R1,#0B2H ;GPA-BYTE
XRL A,@R0
INC R0
MOV @R0,A ;MOV R0,#0C9H ;DIN_GPA=DATAIN XRL GPA_BYTE
MOV A,R0
MOV R1,A
R_I0: ;4-0
MOV A,@R0 ;DIN_GPA
ANL A,#1FH
INC R1
MOV @R1,A
S_I_O: ;3-0 7-5
MOV A,@R0
SWAP A
CLR C
RRC A
INC R1
MOV @R1,A
T_I_0:
MOV A,@R0 ;7-3
ANL A,#0F8H
RR A
RR A
RR A
INC R1
MOV @R1,A
R_POLYNOMIAL:
INC R1
MOV A,R1
MOV R0,A
ADD A,#07H
MOV B,A ;R_SUM ADDR ;R_SUM=(RD+{RG[3:0],RG[4]} ) MOD 31*
MOV A,@R0 ;RG
MOV C,ACC.4
ANL A,#0FH
RLC A
INC R1
INC R1
INC R1
ADD A,@R1;RD
JNB ACC.5,R_MOVE
CLR ACC.5
INC A
R_MOVE:
MOV R1,B
MOV @R1,A ;R_SUM
MOV A,R0 ;RF->RG
MOV R1,A
INC R1
MOV A,@R1
MOV @R0,A ;RG
INC R1;RE->RF
MOV A,@R1
INC R0
MOV @R0,A;RF
INC R1;RD->RE
INC R0
MOV A,@R1
MOV @R0,A ;RE
;-------------------- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV A,B
SUBB A,#0AH
MOV R1,A
MOV A,@R1;R_I
MOV B,A
MOV A,R1
ADD A,#07H
MOV R1,A
MOV A,B
XRL A,@R1 ;RC
INC R0
MOV @R0,A ;RD=RC XOR RI
INC R1;RB->RC
MOV A,@R1
INC R0;RC
MOV @R0,A
INC R1;RA>RB
MOV A,@R1
INC R0
MOV @R0,A ;RB
INC R1;R_SUM>RA
MOV A,@R1
INC R0;RA
MOV @R0,A
S_POLYNOMIAL:
INC R1
MOV A,R1
ADD A,#07H
MOV B,A;S_SUM
MOV A,@R1
MOV C,ACC.6
ANL A,#3FH
RLC A
INC R0
INC R0
INC R0;SF
ADD A,@R0
JNB ACC.7,S_MOVE
CLR ACC.7
INC A
S_MOVE:
MOV R1,B;MOV R1,#0CBH ;S_SUM=(SF+{SG[5:0],SG[6]}) MOD 127*
MOV @R1,A
MOV A,R1
SUBB A,#06H
MOV R1,A;SF>SG
MOV A,@R1;SG
DEC R0
MOV @R0,A
MOV A,R1 ;S_I
SUBB A,#0BH
MOV R1,A
MOV A,@R1
INC R0;SE
INC R0
XRL A,@R0
DEC R0;MOV R1,#0C1H ;SF=S_I XOR SE
MOV @R0,A
MOV A,R1
ADD A,#0DH;SD>SE
MOV R1,A
MOV A,@R1
INC R0
MOV @R0,A;SE
INC R1 ;SC>SD
MOV A,@R1
INC R0 ;SD
MOV @R0,A
INC R1 ;SB>SC
MOV A,@R1
INC R0 ;SC
MOV @R0,A
INC R1 ;SA>SB
MOV A,@R1
INC R0 ;SB
MOV @R0,A
INC R1 ;S_SUM>SA
MOV A,@R1
INC R0 ;SA
MOV @R0,A
T_POLYNOMIAL:
INC R1 ;TE
MOV B,R1
MOV A,@R1
INC R1 ;TC
INC R1
ADD A,@R1 ;TE+TC
JNB ACC.5,T_MOVE
CLR ACC.5
INC A
T_MOVE:
INC R1 ;T_SUM
INC R1
INC R1
MOV @R1,A
MOV R1,B
INC R1;TD>TE
MOV A,@R1;TE
MOV R0,B
MOV @R0,A
INC R1 ;TC>TD
INC R0 ;TD
MOV A,@R1
MOV @R0,A
MOV A,R1 ;T_I
MOV B,R1
SUBB A,#13H
MOV R1,A
MOV A,@R1
MOV R1,B
INC R1 ;TB
XRL A,@R1
INC R0 ;TC=TB XRL TI
MOV @R0,A
INC R1 ;TA>TB
MOV A,@R1
INC R0 ;TB
MOV @R0,A
INC R1 ;T_SUM>TA
MOV A,@R1
INC R0 ;TA
MOV @R0,A
RET
OUTPUT_STAGE:
MOV A,R0 ;IF SA[i]=1往下,ELSE JMP CALCU I(0-3)
SUBB A,#06H
MOV R0,A
MOV A,@R0
JB ACC.0,CALCU
MOV A,R0
SUBB A,#08H
MOV R1,A
MOV A,@R1 ;RA
MOV R3,A
MOV A,R0
SUBB A,#0CH
MOV R1,A
MOV A,@R1 ;RE
MOV A,R3
XRL A,@R1
ANL A,#01H
MOV B,A
JMP CALCU_I1
CALCU:
MOV A,R0
ADD A,#06H
MOV R1,A ;TA
MOV A,@R1
MOV R3,A
MOV A,R0 ;TD
ADD A,#03H
MOV R1,A
MOV A,R3
XRL A,@R1
ANL A,#01H
MOV B,A
CALCU_I1:;IF SA[i]=1往下,ELSE JMP CALCU I(0>3)
MOV A,@R0
JB ACC.1,CALCU1
MOV A,R0
SUBB A,#08H
MOV R1,A
MOV A,@R1;RA
MOV R3,A
MOV A,R0
SUBB A,#0CH
MOV R1,A
MOV A,R3
XRL A,@R1 ;RE
ANL A,#02H
ADD A,B
MOV B,A
JMP CALCU_I2
CALCU1:
MOV A,R0 ;TA
ADD A,#06H
MOV R1,A
MOV A,@R1
MOV R3,A
MOV A,R0
ADD A,#03H
MOV R1,A
MOV A,R3
XRL A,@R1 ;TD
ANL A,#02H
ADD A,B
MOV B,A
CALCU_I2:
MOV A,@R0
JB ACC.2,CALCU2;RA
MOV A,R0
SUBB A,#08H
MOV R1,A
MOV A,@R1
MOV R3,A
MOV A,R0
SUBB A,#0CH
MOV R1,A
MOV A,R3
XRL A,@R1
ANL A,#04H
ADD A,B
MOV B,A
JMP CALCU_I3
CALCU2:;TA
MOV A,R0
ADD A,#06H
MOV R1,A
MOV A,@R1;TD
MOV R3,A
MOV A,R0
ADD A,#03H
MOV R1,A
MOV A,R3
XRL A,@R1
ANL A,#04H
ADD A,B
MOV B,A
CALCU_I3:
MOV A,@R0
JB ACC.3,CALCU3
MOV A,R0
SUBB A,#08H
MOV R1,A;RA
MOV A,@R1;RE
MOV R3,A
MOV A,R0
SUBB A,#0CH
MOV R1,A
MOV A,R3
XRL A,@R1
ANL A,#08H
ADD A,B
MOV B,A
JMP CALCU_OUTPUT
CALCU3:;TA
MOV A,R0
ADD A,#06H
MOV R1,A
MOV A,@R1;TD
MOV R3,A
MOV A,R0
ADD A,#03H
MOV R1,A
MOV A,R3
XRL A,@R1
ANL A,#08H
ADD A,B
MOV B,A
CALCU_OUTPUT:;GPA_BYTE
MOV A,R5
ADD A,#0CH
MOV R0,A ;
MOV A,@R0
ANL A,#0FH
SWAP A
ADD A,B
MOV @R0,A
RET
CRYPTO_DATA_REPEAT:
LCALL CRYPTO_DATA
LCALL OUTPUT_STAGE
DJNZ R2,CRYPTO_DATA_REPEAT
RET
DECRYPTO_DATA: ;解密出Plaintext
DECRYPTO_DATA_REPEAT:;为再解密作准备
MOV A,R5
ADD A,#05H
MOV R1,A
MOV A,@R1
MOV R7,A
MOV A,R5
ADD A,#06H
MOV R1,A
MOV A,@R1
MOV R2,A ;明文出口地址;4.1
MOV A,R5
ADD A,#07H
MOV R1,A
MOV A,@R1
MOV R4,A ;解密个数
DECRYPTO_DATA_REPEAT1:
MOV A,R7 ;密文地址
MOV R0,A
MOV A,R5
ADD A,#0CH
MOV R1,A
MOV A,@R1
XRL A,@R0
MOV R6,A
MOV B,R2 ;4.1
MOV R1,B
MOV @R1,A
MOV A,R5
ADD A,#0BH
MOV R0,A ;DATAIN
MOV A,R6
MOV @R0,A
LCALL CRYPTO_DATA
LCALL OUTPUT_STAGE
MOV A,R5
ADD A,#0BH
MOV R0,A ;DATAIN
MOV @R0,#00H
LCALL CRYPTO_DATA
LCALL OUTPUT_STAGE
LCALL CRYPTO_DATA
LCALL OUTPUT_STAGE
LCALL CRYPTO_DATA
LCALL OUTPUT_STAGE
LCALL CRYPTO_DATA
LCALL OUTPUT_STAGE
LCALL CRYPTO_DATA
LCALL OUTPUT_STAGE
INC R7
INC R2;4.1
DJNZ R4,DECRYPTO_DATA_REPEAT1
MOV A,R5
ADD A,#05H
MOV R1,A
MOV A,R7
MOV @R1,A;更新读出的密文地址
RET
VERIFY_WRITE_PASSWORD:
MOV A,R5
ADD A,#28H ;28
MOV R0,A
MOV @R0,#07H
INC R0 ;29
MOV @R0,#0BAH
MOV A,R5
ADD A,#01H
MOV R1,A
MOV A,@R1
ANL A,#0FH
INC R0 ;2A
MOV @R0,A
INC R0 ;2B
MOV @R0,#00H
INC R0 ;2C
MOV @R0,#03H
WRITE0:
CJNE A,#00H,WRITE1
MOV A,#00H
MOV R4,A
JMP SEND_READ_PASSWORD;通用部分调用
WRITE1: CJNE A,#01H,WRITE2
MOV A,#06H
MOV R4,A
JMP SEND_READ_PASSWORD
WRITE2:CJNE A,#02H,WRITE3
MOV A,#0CH
MOV R4,A
JMP SEND_READ_PASSWORD
WRITE3: CJNE A,#03H,WRITE4
MOV A,#12H
MOV R4,A
JMP SEND_READ_PASSWORD
WRITE4: CJNE A,#04H,WRITE5
MOV A,#18H
MOV R4,A
JMP SEND_READ_PASSWORD
WRITE5: CJNE A,#05H,WRITE6
MOV A,#1EH
MOV R4,A
JMP SEND_READ_PASSWORD
WRITE6: CJNE A,#06H,WRITE7
MOV A,#24H
MOV R4,A
JMP SEND_READ_PASSWORD
WRITE7: MOV A,#2AH
MOV R4,A
JMP SEND_READ_PASSWORD
VERIFY_READ_PASSWORD:
MOV A,R5
ADD A,#28H ;28
MOV R0,A
MOV @R0,#07H
INC R0 ;29
MOV @R0,#0BAH
MOV A,R5
ADD A,#01H
MOV R1,A
MOV A,@R1
ANL A,#0FH
ADD A,#10H
INC R0 ;2A
MOV @R0,A
INC R0 ;2B
MOV @R0,#00H
INC R0 ;2C
MOV @R0,#03H
MOV DPTR,#PASSWORD_TABLE
READ0: CJNE A,#10H,READ1
MOV A,#03H
MOV R4,A
JMP SEND_READ_PASSWORD
READ1: CJNE A,#11H,READ2
MOV A,#09H
MOV R4,A
JMP SEND_READ_PASSWORD
READ2: CJNE A,#12H,READ3
MOV A,#0FH
MOV R4,A
JMP SEND_READ_PASSWORD
READ3: CJNE A,#13H,READ4
MOV A,#15H
MOV R4,A
JMP SEND_READ_PASSWORD
READ4: CJNE A,#14H,READ5
MOV A,#1BH
MOV R4,A
JMP SEND_READ_PASSWORD
READ5: CJNE A,#15H,READ6
MOV A,#21H
MOV R4,A
JMP SEND_READ_PASSWORD
READ6: CJNE A,#16H,READ7
MOV A,#27H
MOV R4,A
JMP SEND_READ_PASSWORD
READ7: MOV A,#2DH
MOV R4,A
JMP SEND_READ_PASSWORD
SEND_READ_PASSWORD:
MOV A,R5
ADD A,#0BH
MOV R0,A ;DATAIN
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,#2DH
MOV R1,A
MOV A,@R0
MOV @R1,A
MOV A,R5
ADD A,#0BH
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -