用emu8086编写程序实现账号、密码的注册和登录设置。要求:程序运行时首先提示“PLEASE INPUT ’L’ TO LOGIN OR ‘R’ TO REGISTRATION!”当输入’L’时,提示登录和输入密码,其中,密码输入时显示为******,登录账号或密码错误时提示出错。(可预置账号为lynu,密码为lynu2023);当输入’R’,提示注册账号,其中密码由6~8位数字和字母组成,组成错误提示重新输入密码。
时间: 2023-11-25 10:08:51 浏览: 39
好的,以下是用emu8086编写的实现账号、密码的注册和登录设置的程序:
```
.model small
.stack 100h
.data
msg1 db 'PLEASE INPUT ''L'' TO LOGIN OR ''R'' TO REGISTRATION!', 0ah, '$'
msg2 db 'LOGIN:', 0ah, '$'
msg3 db 'PASSWORD:', 0ah, '$'
msg4 db 'REGISTRATION:', 0ah, '$'
msg5 db 'ACCOUNT:', 0ah, '$'
msg6 db 'PASSWORD:', 0ah, '$'
msg7 db 'PASSWORD MUST BE 6-8 CHARACTERS AND CONSIST OF ALPHABETS OR DIGITS ONLY!', 0ah, '$'
msg8 db 'LOGIN SUCCESS!', 0ah, '$'
msg9 db 'INCORRECT ACCOUNT OR PASSWORD!', 0ah, '$'
msg10 db 'REGISTRATION SUCCESS!', 0ah, '$'
account db 'lynu'
password db 'lynu2023'
input1 db ?
input2 db 10 dup('$')
input3 db 10 dup('$')
input4 db ?
input5 db 10 dup('$')
input6 db 10 dup('$')
.code
main proc
mov ax, @data
mov ds, ax
start:
mov ah, 09h
lea dx, msg1
int 21h
; 输入'L'以登录,输入'R'以注册
mov ah, 01h
int 21h
mov input1, al
; 登录
cmp input1, 'L'
jne registration
mov ah, 09h
lea dx, msg2
int 21h
; 输入账号
mov ah, 0ah
lea dx, input2
int 21h
; 输入密码
mov ah, 09h
lea dx, msg3
int 21h
mov ah, 08h
mov bh, 0
mov cx, 6
lea dx, input3
int 21h
; 判断账号和密码是否正确
cmp input2, account
jne login_error
cmp input3, password
jne login_error
; 登录成功
mov ah, 09h
lea dx, msg8
int 21h
jmp end_program
login_error:
; 账号或密码错误
mov ah, 09h
lea dx, msg9
int 21h
jmp start
registration:
; 注册
cmp input1, 'R'
jne start
mov ah, 09h
lea dx, msg4
int 21h
; 输入账号
mov ah, 0ah
lea dx, input5
int 21h
; 输入密码
mov ah, 09h
lea dx, msg6
int 21h
; 判断密码是否符合要求
mov ah, 08h
mov bh, 0
mov cx, 8
lea dx, input6
int 21h
mov si, 0
check_password:
mov al, input6[si]
cmp al, '0'
jb password_error
cmp al, '9'
ja check_letter
jmp check_next
check_letter:
cmp al, 'A'
jb password_error
cmp al, 'Z'
ja check_lowercase
jmp check_next
check_lowercase:
cmp al, 'a'
jb password_error
cmp al, 'z'
ja password_error
check_next:
inc si
cmp si, 8
jne check_password
; 注册成功
mov ah, 09h
lea dx, msg10
int 21h
jmp end_program
password_error:
; 密码不符合要求
mov ah, 09h
lea dx, msg7
int 21h
jmp registration
end_program:
mov ah, 4ch
int 21h
main endp
end main
```
程序流程如下:
1. 显示提示信息,让用户选择“L”以登录或“R”以注册。
2. 如果选择登录,则提示输入账号和密码,否则进入注册流程。
3. 如果输入的账号和密码正确,则提示登录成功并结束程序,否则提示账号或密码错误并返回第一步。
4. 如果选择注册,则提示输入账号和密码。
5. 如果输入的密码不符合要求(长度不为6-8位或不全是字母或数字),则提示重新输入密码并返回第四步。
6. 注册成功,则提示注册成功并结束程序。
注意:在emu8086中,输入的字符串最后会自动添加一个换行符,因此在比较输入的字符串时要注意去掉换行符。