在dos中调试我们缩写的汇编代码是一件对于电子学生来说常有的事情,在这里就俩介绍一下相关的知识,在这里,我使用一个示例的代码,这个代码其实没有很大的作用,就是一个有一个循环体的程序,在程序的最后,我们将所想要看到的dx寄存器中(dl)的内容打印出来,其实这个程序开始的目的也就在于调试,因为之前不明白怎样在dosemu(这个上一篇有涉及,就是在ubuntu中的学习汇编的一个工具,通过这个工具,我们可以方便的学习汇编,当然,在这之前的环境的配置也是比较麻烦的,不过按照我的步骤,相信不是很麻烦),好了,继续我们的汇编之旅。
首先,我们将代码写好,具体的编译过错成不再详细的讲解了,贴上代码:
stack segment STACK
DW 128 DUP(?)
stack ENDS
data SEGMENT PARA 'data'
data ENDS
code SEGMENT PARA 'code'
ASSUME cs:code , ds:data , ss:stack
main PROC FAR
push ds
mov cx,11;
mov dl,00
xun: inc dx
dec cx
cmp cx,00
ja xun
mov ah,2
int 21h
ret
main ENDP
code ENDS
END main
这个代码是从我的第一个helloworld的代码中改过来的,当然,初学汇编,肯定会有代码上不太规范的地方,还请大家指正!
好了,在最后,我们调用的是21号软中断中的2号功能,从对这个功能的描述中,我们可以看到这个功能是用来显示输出的,而入口的参数就是DL中的内容,所以,这样我们就可以看到DL中的内容了,想想还真是有趣,为了这样的调试的目的写了这样的代码,最后还是用正规的调试方法来调试看DL中的内容,不过不管这些了,接下来我们编译,用dosemu中的masm和link两个指令可以编译,如果成功的话,最后我们可以得到我们想要的exe程序,当然,ubuntu里面是没有办法来运行.exe程序的,但是dosemu十一个模拟式的环境,所以可以在这里面运行和调试,编译完毕,我们有了相应的.exe程序,现在打开dosemu(这个如果尤有问题就去百度一下吧),进入相应的有你的masm.exe和link.exe和debug.exe(没有debug这个也没事,这个dosemu是自带的,主要是进入有你前面生成的编译完的.exe程序的目录,好让你的dosemu找到,准确的说应该是debug找到),好了,进入目录,在命令行中输入debug xxx.exe(xxx就是你的编译好了得到的exe程序),然后你用p指令进行程序的跟进,这样你就可以看到每一条指令执行以后的寄存器情况(当然也就包括我们的dx这个寄存器啦)还有下一条指令,基本上你就可以完成所有的调试工作了。好了,恭喜你自己吧,汇编可不是那么好学的,有了这个,我们要更奋力的学习啦!
文章评论(0条评论)
登录后参与讨论