📄 password.asm
字号:
.EXTERNAL delay2,_shuo
.INCLUDE hardware.inc
.CODE
.PUBLIC _password
_password:
PUSH R1,R5 TO [SP]
R1=12
push R1 to [sp]
CALL _shuo //请输入新密码
pop R1 from [sp]
lp:R2=0x0720
lp9: call sub2
R3=[0x06ff]
R3+=1
[0x06ff]=R3
[R2]=R1
R2+=1
CMP R1,0x000c
JNZ lp9
R1=14
push R1 to [sp]
CALL _shuo //请再输入一次
pop R1 from [sp]
R2=0x0730
lp10: call sub2
//R3=[0x06ff]
// R3+=1
//[0x06ff]=R3
[R2]=R1
R2+=1
CMP R1,0x000c
JNZ lp10
R1=0x0720
R2=0x0730
R4=[0x06ff]
lp11:R4-=1
CMP R4,0x0000
JZ lp12
R3=[R1++]
CMP R3,[R2++]
JZ lp11
R1=11
push R1 to [sp]
CALL _shuo //两次输入不一致,请重新输入
pop R1 from [sp]
R1=0x0000
[0x06ff]=R1
GOTO lp
lp12: R4=[0x06ff]
[0x06fa]=R4
R1=0x0700
R2=0x0720
lp13:R3=[R2++]
[R1++]=R3
R4-=1
CMP R4,0x0000
JNZ lp13
R1=15
push R1 to [sp]
CALL _shuo //密码修改成功
pop R1 from [sp]
POP R1,R5 FROM [SP]
RETF
sub2:.PROC //读按键子程序
R1=0x00f0
[P_IOA_Dir]=R1
[P_IOA_Attrib]=R1
R1=0x004f
[P_IOA_Data]=R1
lp14: R1=0x003f //读状态寄存器
[P_IOA_Data]=R1
R1=0x00bf
[P_IOA_Data]=R1
R1=[P_IOA_Data]
R3=0x003f
[P_IOA_Data]=R3
R4=0x0001
[P_Watchdog_Clear]=R4
R3=0x004f
[P_IOA_Data]=R3
TEST R1,0x0004
JZ lp14
R1=0x006f
[P_IOA_Data]=R1
R1=0x001f //读数据
[P_IOA_Data]=R1
R1=0x009f
[P_IOA_Data]=R1
R1=[P_IOA_Data]
R3=0x001f
[P_IOA_Data]=R3
R3=0x006f
[P_IOA_Data]=R3
R1&=0x000f
PUSH R1,R5 TO [SP]
CALL delay3
POP R1,R5 FROM [SP]
RETF
.ENDP
delay3:.PROC
loop:
R1=20
L_loop1:
R2=1248
nop
nop
L_loop2:
R3=0x0001
[P_Watchdog_Clear]=R3
R2-=1
JNZ L_loop2
R1-=1
JNZ L_loop1
RETF
.ENDP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -