任何人都可以帮我解决这个问题吗?
我需要创建一个接受用户确定名称的asm程序,并询问用户是否确定他输入的确定名称,然后用户将选择y/n
。如果用户输入y
,则程序将打印该消息,然后您可能是chris +用户姓氏,如果他输入n
,程序将跳回并再次询问姓氏。如果他进入y
或n
以外的其他人,该计划将跳回并询问"您确定吗?"
当我运行程序时遇到错误。这是我的代码:
.model small
.stack 64h
.data
msg01 db 13, 10, "What is your surename?: ", "$"
msg02 db 13, 10, "Are you sure? y/n", "$"
msg03 db 13, 10, "Then you must be chris ", "$"
nameinput label byte
maxnamelen db 20
curnamelen db ?
namefield db 20 dup(?)
.code
start:
mov ax, @data
mov ds, ax
inputsurename:
mov ax, 09h
mov dx, offset msg01
int 21h
mov ah, 0ah
mov dx, offset nameinput
int 21h
mov bx, 0
mov bl, curnamelen
mov namefield [bx], "$"
inputchoice:
mov ax, 09h
mov dx, offset msg02
int 21h
mov ah, 1
int 21h
cmp al, 'n'
je inputsurename
cmp al, 'y'
jne inputchoice
printname:
mov ah, 09h
mov dx, offset msg03
int 21h
mov ah, 09h
mov dx, offset namefield
int 21h
mov ah, 4ch
int 21h
end start
答案 0 :(得分:0)
这两个mov ax, 09h
是错误的。该指令使AL
为09h,AH
为00h。但对于int 21h/09h
,您需要AH
= 09h。所以将其更改为mov ah, 09h
。