assume cs:code,ds:data data segment input_buffer db 20 dup(0) ; 用户输入的缓存区 password db "5201314$" ; 正确密码 prompt_right db "Password Right!$" ; 正确密码提示 prompt_error db "Password Error!$" ; 错误密码提示 data ends code segment start: mov ax, data ; 数据段寄存器 mov ds, ax mov ah, 0ah ; 读取用户输入,存入input_buffer中 mov dx, offset input_buffer int 21h mov si, offset password ; 将标准密码存入si寄存器中 mov di, offset input_buffer ; 将用户输入的密码存入di寄存器中 inc di ; 跳过input_buffer的第一个字节(即缓存区的长度) check: mov al, [si] ; 读取标准密码中的字符 cmp al, "$" ; 判断是否到了字符串结尾 je compare mov ah, 2h ; 输出"*"替代原密码 mov dl, '*' int 21h inc si inc di jmp check compare: cmp [di], "$" je result cmp [di], al ; 比较输入的密码和标准密码 je right jmp wrong right: inc si inc di jmp compare wrong: mov ah, 9h mov dx, offset prompt_error int 21h jmp end_prog result: mov ah, 9h mov dx, offset prompt_right int 21h jmp end_prog end_prog: mov ah, 4ch ; DOS退出程序 int 21h code ends end start
时间: 2024-01-27 18:05:33 浏览: 65
STACK1_SEGMENT_STACK.rar_STACK1 SEGMENT_stack segment stack
5星 · 资源好评率100%
这是一段使用8086汇编语言实现的密码输入程序。程序中使用了输入缓存区来存储用户的输入,然后将用户输入的密码和标准密码(即“5201314”)逐个字符比较,如果相同输出“Password Right!”,否则输出“Password Error!”。下面是代码解释:
```
assume cs:code,ds:data ; 声明段寄存器
data segment
input_buffer db 20 dup(0) ; 用户输入的缓存区
password db "5201314$" ; 正确密码
prompt_right db "Password Right!$" ; 正确密码提示
prompt_error db "Password Error!$" ; 错误密码提示
data ends
code segment
start:
mov ax, data ; 数据段寄存器
mov ds, ax
mov ah, 0ah ; 读取用户输入,存入input_buffer中
mov dx, offset input_buffer
int 21h
mov si, offset password ; 将标准密码存入si寄存器中
mov di, offset input_buffer ; 将用户输入的密码存入di寄存器中
inc di ; 跳过input_buffer的第一个字节(即缓存区的长度)
check:
mov al, [si] ; 读取标准密码中的字符
cmp al, "$" ; 判断是否到了字符串结尾
je compare
mov ah, 2h ; 输出"*"替代原密码
mov dl, '*'
int 21h
inc si
inc di
jmp check
compare:
cmp [di], "$"
je result
cmp [di], al ; 比较输入的密码和标准密码
je right
jmp wrong
right:
inc si
inc di
jmp compare
wrong:
mov ah, 9h
mov dx, offset prompt_error
int 21h
jmp end_prog
result:
mov ah, 9h
mov dx, offset prompt_right
int 21h
jmp end_prog
end_prog:
mov ah, 4ch ; DOS退出程序
int 21h
code ends
end start
```
程序运行时,先读取用户输入,存入input_buffer中。然后将标准密码和用户输入的密码逐个字符比较,如果相同输出“Password Right!”,否则输出“Password Error!”。程序最后退出。
阅读全文