📄 ssle5.asm
字号:
; 这是被CALLSEL5.C调用的SLE4442卡汇编程序,
; 文件名为SSLE5.ASM
;功能: 旧片处理- 校验密码(55AA55),若通过,将C语言传来的四
; 字节参数写入地址f0h、f1h、f2h、f3h的主存储器中去。
; 若未通过,置标志位FLAG为1。
NAME SSLE5
?PR?_a_func3?SSLE5 SEGMENT CODE
?DT?_a_func3?SSLE5 SEGMENT DATA OVERLAYABLE
?DT?SSLE5 SEGMENT DATA
PUBLIC chai3
PUBLIC ?_a_func3?BYTE
PUBLIC _a_func3
RSEG ?DT?_a_func3?SSLE5
?_a_func3?BYTE:
va:DS 4
vb:DS 1
aa:DS 4
bb:DS 1
RSEG ?DT?SSLE5
chai3:DS 4
RSEG ?PR?_a_func3?SSLE5
_a_func3:
RST BIT P1.0
CLK BIT P1.1
IO BIT P1.2
VDD BIT P1.3
FLAG BIT 0D5H
CBYTE1 EQU 30H
ABYTE2 EQU 0F0H
DBYTE3 EQU 55H
MOV aa,R7
MOV aa+1,R6
MOV aa+2,R5
MOV aa+3,R4
MOV bb,vb
MOV A,bb
JNZ CAT
CLR VDD
LCALL RESET ;read ram
LCALL WCOMM
LCALL RRQ2
SETB VDD
RET
CAT: NOP ;write ram
CLR FLAG
CLR VDD
LCALL RESET
LCALL VERIFI
;LCALL WRMAI2
SETB VDD
RET
RESET: MOV R1, #32
CLR RST
CLR CLK
LCALL DY
SETB RST
LCALL DY
SETB CLK
LCALL DY
CLR CLK
LCALL DY
CLR RST
RESET0: SETB CLK
LCALL DY
CLR CLK
LCALL DY
DJNZ R1, RESET0
RET
WCOMM: LCALL START
MOV A, #CBYTE1
LCALL WBYTE
MOV A, #ABYTE2
LCALL WBYTE
MOV A, #DBYTE3
LCALL WBYTE
LCALL STOP
RET
START: SETB IO
LCALL DY
SETB CLK
LCALL DY
CLR IO
LCALL DY
CLR CLK
RET
STOP: CLR CLK
LCALL DY
CLR IO
LCALL DY
SETB CLK
LCALL DY
SETB IO
RET
WBYTE: MOV R3,#08H
WBYTE1: RRC A
MOV IO,C
SETB CLK
LCALL DY
CLR CLK
LCALL DY
DJNZ R3,WBYTE1
RET
PCLOCK: MOV R1,#32
PCLOCK1: CLR CLK
LCALL DY
SETB CLK
LCALL DY
DJNZ R1,PCLOCK1
CLR CLK
LCALL DY
RET
RRQ: MOV R0,#40H
MOV R4,#10H
RDATA: LCALL RBYTE
MOV @R0,A
INC R0
DJNZ R4,RDATA
CLR CLK
LCALL DY
RET
RRQ1: LCALL RBYTE
MOV R7,A
LCALL RBYTE
MOV R6,A
LCALL RBYTE
LCALL RBYTE
CLR CLK
LCALL DY
RET
RRQ2: LCALL RBYTE
MOV R7,A
LCALL RBYTE
MOV R6,A
LCALL RBYTE
MOV R5,A
LCALL RBYTE
MOV R4,A
CLR CLK
LCALL DY
RET
RBYTE: MOV R3,#08H
RBYTE1: CLR CLK
LCALL DY
SETB CLK
MOV C,IO
RRC A
LCALL DY
DJNZ R3,RBYTE1
RET
DY: MOV R2,#40H
DY1: NOP
DJNZ R2,DY1
RET
WCOMM2: LCALL START
MOV A, R4
LCALL WBYTE
MOV A, R5
LCALL WBYTE
MOV A, R6
LCALL WBYTE
LCALL STOP
RET
NOPASS: SETB FLAG
RET
VERIFI: MOV R4,#31H
MOV R5,#00H
MOV R6,#00H
LCALL WCOMM2
LCALL RRQ1
MOV A,R7
JZ NOPASS
MOV R4,#39H
MOV R5,#00H
MOV R6,#05H
LCALL WCOMM2
MOV R1,#123
LCALL PCLOCK1
MOV R4,#33H
MOV R5,#01H
MOV R6,#055H
LCALL WCOMM2
MOV R1,#02
LCALL PCLOCK1
MOV R4,#33H
MOV R5,#02H
MOV R6,#0AAH
LCALL WCOMM2
MOV R1,#02
LCALL PCLOCK1
MOV R4,#33H
MOV R5,#03H
MOV R6,#055H
LCALL WCOMM2
MOV R1,#02
LCALL PCLOCK1
MOV R4,#39H
MOV R5,#00H
MOV R6,#0FFH
LCALL WCOMM2
MOV R1,#254
LCALL PCLOCK1
MOV R4,#31H
MOV R5,#00H
MOV R6,#00H
LCALL WCOMM2
LCALL RRQ1
MOV A,R7
ANL A,#07H
CJNE A,#07H,NOPASS
WRMAI2: MOV R6,aa
MOV R4,#38H
MOV R5,#0F0H
LCALL WCOMM2
MOV R1,#254
LCALL PCLOCK1
MOV R6,aa+1
MOV R4,#38H
MOV R5,#0F1H
LCALL WCOMM2
MOV R1,#254
LCALL PCLOCK1
MOV R6,aa+2
MOV R4,#38H
MOV R5,#0F2H
LCALL WCOMM2
MOV R1,#254
LCALL PCLOCK1
MOV R6,aa+3
MOV R4,#38H
MOV R5,#0F3H
LCALL WCOMM2
MOV R1,#254
LCALL PCLOCK1
MOV R4,#30H
MOV R5,#0F0H
MOV R6,#00H
LCALL WCOMM2
LCALL RRQ2
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -