8086汇编: 编写程序实现账号、密码的注册和登录设置。要求: (1) 程序运行时首先提示“PLEASE INPUT ’L’ TO LOGIN OR ‘R’ TO REGISTRATION!” (2) 当输入’L’时,提示登录和输入密码,其中,密码输入时显示为******,登录账号或密码错误时提示出错。(可预置账号为lynu,密码为lynu2023); (3) 当输入’R’,提示注册账号,其中密码由6~8位数字和字母组成,组成错误提示重新输入密码。
时间: 2023-11-26 10:02:21 浏览: 30
以下是8086汇编的代码实现:
```assembly
.model small
.stack 100h
.data
prompt1 db 'PLEASE INPUT ''L'' TO LOGIN OR ''R'' TO REGISTRATION!', 0dh, 0ah, '$'
prompt2 db 'LOGIN:', 0dh, 0ah, '$'
prompt3 db 'PASSWORD:', 0dh, 0ah, '$'
prompt4 db 'REGISTRATION:', 0dh, 0ah, '$'
prompt5 db 'ENTER YOUR USERNAME:', 0dh, 0ah, '$'
prompt6 db 'ENTER YOUR PASSWORD (6-8 CHARACTERS):', 0dh, 0ah, '$'
prompt7 db 'INVALID PASSWORD! PLEASE TRY AGAIN.', 0dh, 0ah, '$'
prompt8 db 'LOGIN SUCCESSFUL!', 0dh, 0ah, '$'
prompt9 db 'INCORRECT USERNAME OR PASSWORD! PLEASE TRY AGAIN.', 0dh, 0ah, '$'
username db 'lynu', 0
password db 'lynu2023', 0
reg_username db 16 dup(?)
reg_password db 16 dup(?)
mask db '******'
.code
main proc
mov ax, @data
mov ds, ax
; print initial prompt
lea dx, prompt1
mov ah, 09h
int 21h
; read user input
mov ah, 01h
int 21h
; if user input is 'L', prompt for login
cmp al, 'L'
jne register
; print login prompt
lea dx, prompt2
mov ah, 09h
int 21h
; read username
lea si, reg_username
call read_string
; print password prompt
lea dx, prompt3
mov ah, 09h
int 21h
; read password
lea si, reg_password
call read_password
; compare username and password
cmp reg_username, username
jne login_error
cmp reg_password, password
jne login_error
; print login success message
lea dx, prompt8
mov ah, 09h
int 21h
; exit program
mov ah, 4ch
int 21h
register:
; print registration prompt
lea dx, prompt4
mov ah, 09h
int 21h
; print username prompt
lea dx, prompt5
mov ah, 09h
int 21h
; read username
lea si, reg_username
call read_string
; print password prompt
lea dx, prompt6
mov ah, 09h
int 21h
; read password
lea si, reg_password
call read_password
; check password length
mov cx, 0
lea si, reg_password
count:
cmp byte ptr [si], 0
je check_count
inc cx
inc si
jmp count
check_count:
cmp cx, 6
jl invalid_password
cmp cx, 9
jg invalid_password
; print registration success message
lea dx, prompt8
mov ah, 09h
int 21h
; exit program
mov ah, 4ch
int 21h
read_string proc
; read a string from keyboard input
; input: si = buffer address
; output: buffer contains user input
mov cx, 0
read:
mov ah, 01h
int 21h
cmp al, 0dh
je done
mov byte ptr [si], al
inc si
inc cx
jmp read
done:
mov byte ptr [si], 0
ret
read_string endp
read_password proc
; read a password from keyboard input
; input: si = buffer address
; output: buffer contains user input
mov cx, 0
read:
mov ah, 08h
int 21h
cmp al, 0dh
je done
cmp al, 08h
je backspace
mov byte ptr [si], al
mov dl, '*'
mov ah, 02h
int 21h
inc si
inc cx
jmp read
backspace:
cmp cx, 0
je read
mov dl, 08h
mov ah, 02h
int 21h
mov dl, ' '
mov ah, 02h
int 21h
mov dl, 08h
mov ah, 02h
int 21h
dec si
dec cx
jmp read
done:
mov byte ptr [si], 0
ret
read_password endp
invalid_password:
; print invalid password message
lea dx, prompt7
mov ah, 09h
int 21h
; jump back to registration
jmp register
login_error:
; print login error message
lea dx, prompt9
mov ah, 09h
int 21h
; jump back to initial prompt
jmp main
main endp
end main
```
该程序实现了账号、密码的注册和登录设置,遵循以下要求:
1. 程序运行时首先提示“PLEASE INPUT ’L’ TO LOGIN OR ‘R’ TO REGISTRATION!”
2. 当输入’L’时,提示登录和输入密码,其中,密码输入时显示为******,登录账号或密码错误时提示出错。(可预置账号为lynu,密码为lynu2023)
3. 当输入’R’,提示注册账号,其中密码由6~8位数字和字母组成,组成错误提示重新输入密码。
在登录时,程序将提示用户输入用户名和密码,如果用户名和密码与预置的相符,则输出“LOGIN SUCCESSFUL!”;否则输出“INCORRECT USERNAME OR PASSWORD! PLEASE TRY AGAIN.”。
在注册时,程序将提示用户输入用户名和密码,密码必须由6~8位数字和字母组成,否则将输出“INVALID PASSWORD! PLEASE TRY AGAIN.”。如果密码符合要求,则输出“REGISTRATION SUCCESSFUL!”并退出程序。
在输入密码时,程序将会显示为******,以保护密码安全。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.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)
![](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)