.model small
.data
prompt_msg db "Please enter your length:$"
.stack 100h
.code
main proc
mov ax,@data
mov ds,ax
mov es,ax
call prompt_user
;exit
mov ah,01h
int 21h
mov ah,4ch
int 21h
endp main
prompt_user proc
call NewLine
call CarriageReturn
mov ah,09h
lea dx,prompt_msg
int 21h
ret
endp prompt_user
NewLine proc
mov ah,09h
mov dx,0dh
int 21h
ret
endp NewLine
CarriageReturn proc
mov ah,09h
mov dx,0ah
int 21h
ret
endp CarriageReturn
end main
此代码打印没有换行的消息,并打印三次与前一条消息重叠。我使用Tasm,这是8086汇编。
打印出类似这样的内容
“你的长度在这里:在这里输入你的长度:请在这里输入你的长度:”
答案 0 :(得分:1)
在您的两个程序newline
和carriagereturn
中,您分别将 dx 设置为值13和10,然后执行 09 功能是`显示字符串,从 DS:DX 开始。
现在,prompt_msg
位于 DS:0000 ,因此它会顺便打印来自第14个字符的消息,然后再从第11个字符打印,然后在 dx时打印整个消息加载了prompt_msg
= 0000
我强烈怀疑你应该调用函数 02 而不是 09 ,它会输出 DL 中的字符(因此,'可能只需要在这些程序中加载 DL ,而不是 DX 。)