微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

与屏幕上的其他元素一起打印

如何解决与屏幕上的其他元素一起打印

我正在 TASM MS-DOS 中创建一个注册页面。我创建了一个带有按钮的导航栏来导航到登录页面。我现在试图在屏幕上打印“用户名:”并让用户输入他的用户名,但只要导航栏在屏幕上,它就不起作用。这是我的代码

SignUpMessage db " Sign Up$"
userName db 12 dup(?)

proc AddBreakLines
    mov si,0
    mov cx,5
    BreakLineLoop:
        call printNewLine
        inc si
        loop BreakLineLoop
    ret
endp AddBreakLines

proc Addspaces
    mov si,54
    mov dx,offset space
    SpaceLoop:
        call printStr
        inc si
        loop SpaceLoop
    ret
endp Addspaces
 

proc SignUpPage
    mov ah,0   ; set display mode function.
    mov al,13h ; mode 13h = 320x200 pixels,256 colors.
    int 10h     ; set it!
    mov al,0Fh
    mov cx,-1  ;col
    mov dx,-1 ;row
    mov ah,0ch ; put pixel

    signUpTopBar:
    inc cx
    int 10h
    cmp cx,640
    jne signUpTopBar

    mov cx,10  ; reset to start of col
    inc dx      ;next row
    cmp dx,30
    jne signUpTopBar

    mov al,0h
    mov cx,0  ;col
    mov dx,5  ;row
    mov ah,0ch ; put pixel


    loginButton:
    inc cx
    int 10h
    cmp cx,60
    jne loginButton

    mov cx,0  ; reset to start of col
    inc dx      ;next row
    cmp dx,30
    jne loginButton

    call printNewLine
    call printNewLine
    mov dx,offset LoginMessage
    mov ah,09h
    int 21h

    mov ax,0h
    int 33h
    mov ax,1h
    int 33h
    pressLogin:
    mov ax,3h
    int 33h
    cmp bx,01h
    jne pressLogin
    shr cx,1
    sub dx,2
    cmp cx,60
    ja pressLogin
    cmp dx,5
    jb pressLogin
    cmp dx,30
    ja pressLogin
    mov si,200
    BREAKLINE_SIGNUP:
        call printNewLine
        inc si
        loop BREAKLINE_SIGNUP
    call LoginPage
    
   mov dx,offset userName
   mov bx,dx
   mov [byte ptr bx],9
   mov ah,02h
   int 21h
   
    ret
endp SignUpPage

proc LoginPage
    mov ah,0ch ; put pixel

   
    loginTopBar:
    inc cx
    int 10h
    cmp cx,640
    jne loginTopBar

    mov cx,30
    jne loginTopBar

    mov al,0ch ; put pixel


    signUpButton:
    inc cx
    int 10h
    cmp cx,70
    jne signUpButton

    mov cx,30
    jne signUpButton

    call printNewLine
    call printNewLine
    mov dx,offset SignUpMessage
    mov ah,1h
    int 33h
    pressSignUp:
    mov ax,01h
    jne pressSignUp
    shr cx,60
    ja pressSignUp
    cmp dx,5
    jb pressSignUp
    cmp dx,30
    ja pressSignUp
    mov si,200
    call SignUpPage
    ret
endp LoginPage


函数“printNewLine”是一个从库Assembly-Library打印新行的过程

当我尝试将用于打印消息的代码放在导航栏之前时,它会打印橙色线条和线条。有时,它会打印许多紫色线条。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。