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

用图纸在装配中打印

如何解决用图纸在装配中打印

我正在程序集 tasm ms-dos 中创建一个注册页面一个登录页面。我试图在屏幕上打印“名称:”,但只要屏幕上有绘图,它就不起作用。你知道我做错了什么吗? 这是我的代码


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
    ;jmp WRITE
    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,0
    mov cx,200
    BREAKLINE_SIGNUP:
        call printNewLine
        inc si
        loop BREAKLINE_SIGNUP
    call LoginPage
    WRITE:
    MOV  DL,0   ;SCREEN COLUMN.
    MOV  DH,7     ;SCREEN ROW.
    MOV  AH,2     ;SERVICE TO SET CURSOR POSITION.
    MOV  BH,0     ;PAGE NUMBER.
    INT  10H       ;BIOS SCREEN SERVICES.
    mov dx,offset nameMessage
    mov ah,09h 
    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

call printNewLine 是一个从汇编库打印新行的函数

解决方法

WRITE 永远不会执行!

就在您尝试此 WRITE 之前,您 call LoginPage 但永远不会返回,因为它以 call 结束 SignUpPage 有效地创建了一个无限循环!!!

你有很多未定义的行为!

您使用的屏幕水平为 320 像素,垂直为 200 像素。尽管如此,您的代码要求 BIOS 在 X 范围 [0,640] 和 Y 范围 [-1,29] 中绘制像素。

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