zoukankan      html  css  js  c++  java
  • 8086/8088汇编过程练习 实现登录界面及其验证

    ;2020,10,26 复习汇编过程中  

    ;程序说明,采用子过程编程   输入的用户名和密码放在数据段里面,内置的用户名和密码放在附加段里面

    title 登录界面及验证
    data segment
    mess1 db 'personal_computer'
    tishi db '        welcome to my first page','$'
    name_sign db '        login:','$'
    passwd_sign db '        password:','$'
    enter db 0ah,'$'
    error db 'error','please restart input your name','$'
    error1 db 'error','please restart input your password','$'
    denglu1 db '    **************************************************','$'    ;登录界面提示符
    denglu db '    ****welcome to kali linux!!! hacker nanfengnan****','$'
    denglu2 db '    **************************************************','$'
    name1 db 10 dup(?)
    passwd1 db 10 dup(?)
    count db 0   ;计数器·用来记录用户名,和密码的长度
    data ends

    extra segment
    namet db 4 dup('root')
    passwdt db 3 dup('123')
    extra ends

    stack segment stack
    pe db 100 dup(0)
    stack ends

    code segment
    assume cs:code,ds:data,es:extra,ss:stack
    main proc
    start:
    mov ax,data
    mov ds,ax
    mov ax,extra
    mov es,ax
    mov ax,stack
    mov ss,ax
    mov sp,98
    mov bp,98

    lea dx,tishi   ;输出提示信息
    mov ah,9
    int 21h  ;中断调用
    call enter1

    call sign ;用户名提示符
                   
    call input_name ;输入用户名
    call yanzheng_name ;验证用户名
    call sign1   ;密码提示符
    call input_passwd ;输入密码
    call yanzheng_passwd  ;验证密码

    call enter1
    lea dx,denglu1
    mov ah,9
    int 21h
    call enter1
    lea dx,denglu
    int 21h
    call enter1
    lea dx,denglu2
    int 21h

    mov ah,4ch
    int 21h
    main endp
        
    enter1 proc
    push ax
    push dx
    lea dx,enter
    mov ah,9
    int 21h
    pop dx
    pop ax
    ret
    enter1 endp        
            
    ;过程1  提示信息用户名
    sign proc
    lea dx,name_sign
    int 21h
    ret
    sign endp

    ;过程2
    sign1 proc  
    lea dx,passwd_sign
    mov ah,9
    int 21h
    ret
    sign1 endp                    
           
    ;输入用户名的过程  送入name1中,输入换行结束输入,把数据存入name1
    input_name proc
    and [count],0   ;保证·每次的·次数·正确
    push ax    ;保护现场
    push si
    mov si,0
    t:
    mov ah,1
    int 21h
    cmp al,0dh  ;0dh是换行
    jz e
    inc [count]
    mov name1[si],al
    inc si
    jmp t

    e:
    pop si
    pop ax
    ret
    input_name endp   

    ;输入密码
    input_passwd proc
    and [count],0   ;保证·每次的·次数·正确
    push ax    ;保护现场
    push si
    mov si,0
    tf:    ;死循环输入,换行结束
    mov ah,8    ;改进,使用8号功能,不显示输入,出口在al中,改进图片在最下面
    int 21h
    cmp al,0dh  ;0dh是换行
    jz ef
    inc [count]     ;计数器用来判断长度,root正确密码,防止rootjfjdf也能登陆
    mov passwd1[si],al   ;密码存入数据段的passwd1里面
    inc si
    jmp tf

    ef:
    pop si
    pop ax
    ret
    input_passwd endp



    ;验证用户名是否正确,name和name1字符串比较  cmpsb rep
    yanzheng_name proc
    push si   ;保护寄存器
    push di
    push ax
    push dx
    push cx

    t1:
    lea si,name1
    lea di,namet
    mov cx,4
    cld
    repz cmpsb
    cmp cx,0
    jz ed
    tt:
    lea dx,error  ;用户名错误输出error
    mov ah,9
    int 21h
    lea dx,enter
    int 21h
    call sign
    call input_name
    jmp t1

    ed:
    cmp [count],4
    jnz tt

    pop cx
    pop dx
    pop ax
    pop di
    pop si
    ret
    yanzheng_name endp
          
          
    yanzheng_passwd proc
    push si   ;保护寄存器
    push di
    push ax
    push dx
    push cx

    t11:
    lea si,passwd1
    lea di,passwdt
    mov cx,3
    cld
    repz cmpsb     ;zf=1(相等),cx不等于0时,循环
    cmp cx,0
    jz e22
    tt1:
    lea dx,error1  ;密码错误输出error1
    mov ah,9
    int 21h
    lea dx,enter
    int 21h
    call sign1
    call input_passwd   ;重新输入密码
    jmp t11

    e22:
    cmp [count],3
    jnz tt1

    pop cx
    pop dx
    pop ax
    pop di
    pop si
    ret

    yanzheng_passwd endp      
          
       
              
    code ends
        end start






     

     

  • 相关阅读:
    Java File类应用:递归遍历文件夹和递归删除文件
    综合应用题:多线程复制文件(知识点:多线程、随机读写流)
    Java IO流之随机读写流RandomAccessFile
    Java之枚举----小试牛刀练习
    Java之枚举
    PHP笔试题及答案
    静态方法何时使用
    你怎么理解并使用静态方法和实例化方法的?
    99%的人理解错 HTTP 中 GET 与 POST 的区别
    描述一下大流量高并发量网站的解决方案
  • 原文地址:https://www.cnblogs.com/nanfengnan/p/13877980.html
Copyright © 2011-2022 走看看