2013-12-08 52 views
1

就像标题所说,我的打印程序出于某种原因正在输出垃圾。这里的PROC定义:打印到屏幕语句的输出中的垃圾

print proc near 
mov ah, 09h 
int 21h 
ret 
print endp 

而这里也正是它被称为在我的代码:

emptyTail: 
mov dl, offset standardError 
call print 
jmp quit 

这里是StandardError的:

standardError db "Sorry we ran into an error. Try again", 13,10, "$" 

的代码工作正常,但一旦这样做的其他部分特殊的分支被调用,它吐出一堆奇怪的字符。任何想法为什么?

+0

'dh'可能有错误的值,所以输出是你没想到的。它应该是'mov dx,offset standardError'。 – nrz

+0

谢谢@nrz。它仍然给我奇怪的一堆字符,只是这次是这样的:4878rygu3ilht83hu43ry783494948u704对不起,我们遇到了一个错误。再试一次 – JonAmen

+0

你可能有不正确的值是'ds'。字符串地址在'ds:dx'中给出。 – nrz

回答

1

您需要将DX与您的字符串的偏移量。 DS可能已经指向您的细分数据,不是吗?它是一个COM或EXE文件你在做什么?如果它是COM,则DS已经设置。

emptyTail: 
mov dx, offset standardError ;DX, not DL or DH. 
call print 
jmp quit