Assembly 打印到屏幕语句输出中的垃圾
正如标题所说,出于某种原因,我的打印过程正在输出垃圾。以下是过程定义:Assembly 打印到屏幕语句输出中的垃圾,assembly,x86,Assembly,X86,正如标题所说,出于某种原因,我的打印过程正在输出垃圾。以下是过程定义: print proc near mov ah, 09h int 21h ret print endp 下面是在我的代码中调用它的地方: emptyTail: mov dl, offset standardError call print jmp quit 以下是标准错误: standardError db "Sorry we ran into an error. Try again", 13,10, "$"
print proc near
mov ah, 09h
int 21h
ret
print endp
下面是在我的代码中调用它的地方:
emptyTail:
mov dl, offset standardError
call print
jmp quit
以下是标准错误:
standardError db "Sorry we ran into an error. Try again", 13,10, "$"
代码的其他部分工作正常,但一旦调用了这个特定分支,它就会抛出一堆奇怪的字符。知道为什么吗?您需要将DX与字符串的偏移量放在一起。DS可能已经指向了您的段数据,不是吗?你制作的是COM还是EXE文件?如果是COM,则DS已设置
emptyTail:
mov dx, offset standardError ;DX, not DL or DH.
call print
jmp quit
您需要将DX与字符串的偏移量放在一起。DS可能已经指向了您的段数据,不是吗?你制作的是COM还是EXE文件?如果是COM,则DS已设置
emptyTail:
mov dx, offset standardError ;DX, not DL or DH.
call print
jmp quit
dh
可能有不正确的值,因此输出是您意想不到的。它应该是mov-dx,offset-standardError
。谢谢@nrz。它仍然会给我一堆奇怪的字符,只是这次是这样的:4878rygu3ilht83hu43ry783494948u704抱歉,我们遇到了一个错误。请再试一次。您可能也有不正确的值isds
。字符串地址在ds:dx
中给出。ok@nrz这是有道理的。有没有办法清除ds:dx
寄存器中的值“有没有办法清除code
ds:dx寄存器中的值”对不起,我不明白你的意思。dh
可能有不正确的值,因此输出是你意想不到的。它应该是mov-dx,offset-standardError
。谢谢@nrz。它仍然会给我一堆奇怪的字符,只是这次是这样的:4878rygu3ilht83hu43ry783494948u704抱歉,我们遇到了一个错误。请再试一次。您可能也有不正确的值isds
。字符串地址在ds:dx
中给出。ok@nrz这是有道理的。“有没有办法清除ds:dx
寄存器中的值”有没有办法清除code
ds:dx寄存器中的值“对不起,我不明白你的意思。