【发布时间】:2021-06-18 09:21:02
【问题描述】:
我正在组装 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, 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
loginTopBar:
inc cx
int 10h
cmp cx, 640
jne loginTopBar
mov cx, 10 ; reset to start of col
inc dx ;next row
cmp dx, 30
jne loginTopBar
mov al, 0h
mov cx, 0 ;col
mov dx, 5 ;row
mov ah, 0ch ; put pixel
signUpButton:
inc cx
int 10h
cmp cx, 70
jne signUpButton
mov cx, 0 ; reset to start of col
inc dx ;next row
cmp dx, 30
jne signUpButton
call printNewLine
call printNewLine
mov dx, offset SignUpMessage
mov ah, 09h
int 21h
mov ax, 0h
int 33h
mov ax, 1h
int 33h
pressSignUp:
mov ax, 3h
int 33h
cmp bx, 01h
jne pressSignUp
shr cx, 1
sub dx, 2
cmp cx, 60
ja pressSignUp
cmp dx, 5
jb pressSignUp
cmp dx, 30
ja pressSignUp
mov si, 0
mov cx, 200
call SignUpPage
ret
endp LoginPage
调用 printNewLine 是一个从汇编库中打印新行的函数
【问题讨论】:
标签: assembly printing x86 dos tasm