📄 84.asm
字号:
.MODEL SMALL, C
.DATA
CR EQU 0DH
MSG1 DB "Welcome..."
MSG2 DB "Invalid Password"
PSW1 DB "HELLO"
BUFF DB 10 DUP(?)
.CODE
Clear PROC Near Uses AX BX CX DX ;清屏幕,并保护所用寄存器
MOV CL, 0
MOV CH, 0
MOV DL, 79
MOV DH, 24 ;(0,0)-(24,79)是屏幕的左上角和右下角
MOV BH, 7
MOV AL, 0
MOV AH, 6
INT 10H
RET
Clear ENDP
.STARTUP
MOV AX, DS
MOV ES, AX
XOR BX, BX
again:
MOV AH, 0H
INT 16H ;从键盘接受字符输入
CMP AL, CR
JZ next ;若按“回车“键,则结束密码输入
CMP BX, 10
JZ again ;若已接受了10个字符,则丢弃随后的字符
MOV BUFF[BX], AL
INC BX ;保存当前输入,并移动有关指针
MOV DL, '#'
MOV AH, 2
INT 21H ;在屏幕上显示字符"#"
JMP again
next:
CALL Clear ;清屏幕,见例8.2中的过程定义
.IF BX == 5
LEA SI, PSW1
LEA DI, BUFF
MOV CX, BX
CLD
REPE CMPSB ;比较字符串PSW1和BUFF
.ENDIF
.IF ZERO? ;若字符串的相应字符相同
MOV BP, OFFSET MSG1 ;显示字符串首地址
MOV BL, 09H ;显示字符颜色:蓝色
MOV CX, 0AH ;显示字符串长度:10
.ELSE
MOV BP, OFFSET MSG2 ;显示字符串首地址
MOV BL, 8CH ;显示字符颜色:闪烁、亮红色
MOV CX, 10H ;显示字符串长度:16
.ENDIF
MOV AL, 0
MOV BH, 0
MOV DH, 5
MOV DL, 20 ;在位置(5,20)的位置开始显示字符串
MOV AH, 13H
INT 10H ;使用中断10H之功能13H来显示字符串
.EXIT 0
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -