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






     

     

  • 相关阅读:
    【异常】No ManagedConnections available within configured blocking timeout
    【异常】Caused by: java.lang.ClassNotFoundException: org.springframework.dao.DataIntegrityViolationException
    【Redis】:Jedis 使用
    【异常】INFO: TopologyManager: EndpointListener changed ...
    【Java】JDK类 CountDownLatch
    【WEB】一个简单的WEB服务器
    【JAVA】Socket 编程
    【JBOSS】 JBOSS目录结构
    [SE0]简单的搜索引擎原理
    【ORACLE】 表空间信息
  • 原文地址:https://www.cnblogs.com/nanfengnan/p/13877980.html
Copyright © 2011-2022 走看看