我正在进入汇编编程,我已经开始使用MASM了。我定义了一个用于打印的宏,另一个用于字符串输入。它似乎工作正常,但如果我使用宏,打印字符串将无法工作,我不知道为什么。
yaml: line 40: mapping values are not allowed in this context
答案 0 :(得分:1)
我使用MASM 6.15来组装你的样本,然后在DOSbox下运行二进制文件。
您的代码有效,但奇怪的行为源于您错误的换行序列。 DOS需要一个CRLF而不是LFCR,这就是你所拥有的。按此顺序,DOS忽略LF(10),然后处理CR(13)。 DOS处理完CR后,光标位于同一行的开头。然后输入字符串打印在“输入您的字符串”提示的开头。要解决此问题,请按以下步骤撤消换行序列:
prompt db 10, 13, "Enter your string: $"
newl db 10, 13, "$"
以下内容:
prompt db 13, 10, "Enter your string: $"
newl db 13, 10, "$"
输出(一旦修复):
C:\>dostest
Enter your string: howdy
howdy