Assembly 打印时如何删除返回键
我试图获取用户名并用问候语显示它,如何在下一行显示问候语时删除回车键 输出如下:Assembly 打印时如何删除返回键,assembly,output,edit,nasm,enter,Assembly,Output,Edit,Nasm,Enter,我试图获取用户名并用问候语显示它,如何在下一行显示问候语时删除回车键 输出如下: Hello! Name How are you? 我需要它是: Hello! Name How are you? 在调用DOS服务之前,您需要写入最大值 lea dx, [ANSNAME] ;get the name mov byte [ANSNAME], 19h ; initialize name 25 chars max mov ah, 0Ah int 21h 设置不带回车和换行代码的输入缓冲区 A
Hello!
Name
How are you?
我需要它是:
Hello! Name How are you?
lea dx, [ANSNAME] ;get the name
mov byte [ANSNAME], 19h ; initialize name 25 chars max
mov ah, 0Ah
int 21h
ANSNAME times 2+25 db "$"
GREET db "Hello! ", "$"
mov bl, [ANSNAME+1]
mov bh, 0
mov byte [ANSNAME+2+bx], "$"
lea dx, [ANSNAME+2]
mov ah, 09h
int 21h
没有。它分为三行的唯一原因是,对于每一行,您不断添加'0dh,0ah',这相当于C中的'\n'。删除这些,它看起来应该很好。我在ANSNAME上删除了它,它不起作用,它没有显示名称如果OP的目的是不覆盖输入名称的行,则我可能倾向于在开头添加一个
0ah
。OP通过call clrsc
清除屏幕。这不会有什么区别。啊,很好的一点,我很快扫描了代码,但忘记了他通过代码中未声明的函数清除了屏幕。感谢贡献,我得到了这个错误,虽然是在:mov byte ptr[ANSNAME+2+bx],“$”,上面写着逗号、冒号、修饰符或操作数后预期的行尾,非法的command@JedrekFadul我已经编辑了Fifoernik的答案,以符合NASM语法。这比仅删除0dh
和0ah
要复杂一些,因为当名称放在另一个答案也处理的输入缓冲区中时,必须删除名称末尾的回车符。在返回缓冲区中设置长度也有一个错误。
GREET2 db " How are you?",0dh,0ah,"$"
mov bl, [ANSNAME+1]
mov bh, 0
mov byte [ANSNAME+2+bx], "$"
lea dx, [ANSNAME+2]
mov ah, 09h
int 21h