汇编语言编程运行出现了错误,怎么查错?

汇编语言编程运行出现了错误,怎么查错?,第1张

如果程序不长,最好把源码贴出来,怀疑是堆栈问题、或内存 *** 作时的变址或段寄存器值被破坏导致程序代码被改写,而跳转到了不该跳转的地方。

从出错处的cs:ip看,程序跳到了0000:0077这个地址处,一般来说程序自己正常的跳转不会跑到0段去;而且这个位置按说是实模式下BIOS的中断向量表INT 1D服务程序地址的第4个字节,无论是用户程序还是系统程序,跑到这里来执行代码根本就不合理,所以才有上述的怀疑。

顺便说明一下,NTVDM是winnt系列的 *** 作系统用来运行msdos下的应用程序所使用的虚拟机,例如提供对dos的功能调用,象int 21h等api的支持。

这是个远调用子程序,你把调用者偏移地址搞错了

push ds 正确

mov ax,ax ;这个错了。改成:XOR AX,AX或MOV AX,0就正确了。

push ax


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12041631.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存