用汇编语言模拟密码输入:假设数据库中有密码5201314,用户输入一个字符串,显示的时候全都以*出现,然后判断用户输入的字符串是否与数据库中密码相同,若相同,输出“Password Right!”,否则输出 “Password Error!” 提示:将“Password Right!”、“Password Error!”以及5201314定义为字符串
时间: 2023-12-10 14:42:30 浏览: 45
以下是汇编语言模拟密码输入的示例代码:
```
.model small
.stack 100h
.data
password db '5201314$'
input db 20,?,21 dup('$')
msg_right db 'Password Right!',13,10,'$'
msg_error db 'Password Error!',13,10,'$'
.code
main proc
mov ax, @data
mov ds, ax
; 显示密码输入提示
mov ah, 09h
lea dx, input_prompt
int 21h
; 接收用户输入的密码
mov ah, 0Ah
lea dx, input
int 21h
; 将用户输入的密码转换成大写
mov si, offset input + 2 ; 跳过输入缓冲区前两个字节
mov cx, word ptr [input + 1] ; 获取输入字符串长度
mov bl, 'a' - 'A' ; 计算大小写字母的差值
convert_loop:
cmp cx, 0
je compare_password
mov al, [si]
cmp al, 'a'
jb no_convert
cmp al, 'z'
ja no_convert
sub al, bl
mov [si], al
no_convert:
inc si
dec cx
jmp convert_loop
compare_password:
; 将密码转换成全*
xor si, si
mov di, offset password
mov cx, 0
convert_to_star:
mov al, [di]
cmp al, '$'
je password_compare
mov [si], '*'
inc si
inc di
inc cx
jmp convert_to_star
password_compare:
; 比较密码
mov si, offset input + 2 ; 跳过输入缓冲区前两个字节
mov di, offset password
mov cx, word ptr [input + 1] ; 获取输入字符串长度
compare_loop:
cmp cx, 0
je output_result
mov al, [si]
mov bl, [di]
cmp al, bl
jne output_error
inc si
inc di
dec cx
jmp compare_loop
output_result:
; 输出“Password Right!”
mov ah, 09h
lea dx, msg_right
int 21h
jmp exit_program
output_error:
; 输出“Password Error!”
mov ah, 09h
lea dx, msg_error
int 21h
jmp exit_program
exit_program:
mov ah, 4Ch
xor cx, cx
int 21h
input_prompt db 'Please enter the password:',13,10,'$'
end main
```
注:此代码使用的是DOS汇编语言,需要在DOS环境下运行。
相关推荐
![none](https://img-home.csdnimg.cn/images/20210720083646.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)