我正在使用调试学习汇编编程,特别是通过DOSBox来模拟8086处理器。我想做一个循环。当我写类似的东西时:
looplabel: instruction .. .. loop looplabel
如截图所示,我收到错误消息:
你能帮我用调试工具(DOSBox)做个循环吗?
答案 0 :(得分:1)
debug
是一个相当老的调试器。因此它不允许你练习,当你在其中编写代码时,它会直接写入内存(让我想起我的开始时代:))。
因此,当您想要写一些与地址相关的内容时,您必须直接指定地址。
在您的情况下,您必须记住地址073f:0106
,当您想要跳转或分支时,您可以使用它,就像使用标签一样。
-a
15E7:0100 mov si,0
15E7:0103 mov cx, 3
15E7:0106 mov al, [si]
15E7:0108 dec cx
15E7:0109 jne 15e7:0106
15E7:010B ret
15E7:010C
-
这是编写程序的一种非常麻烦的方法,因为如果稍后插入指令,则可能在移动其余代码和调整地址时遇到问题。
如果你想学习汇编,那么最好使用一些汇编程序来测试小代码样本,这是很好的方法。