如何在程序集中进行循环

时间:2013-11-13 13:30:22

标签: loops assembly x86 x86-16 dosbox

我正在使用调试学习汇编编程,特别是通过DOSBox来模拟8086处理器。我想做一个循环。当我写类似的东西时:

looplabel: instruction
..
..
loop looplabel

如截图所示,我收到错误消息:

enter image description here

你能帮我用调试工具(DOSBox)做个循环吗?

1 个答案:

答案 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
-

这是编写程序的一种非常麻烦的方法,因为如果稍后插入指令,则可能在移动其余代码和调整地址时遇到问题。

如果你想学习汇编,那么最好使用一些汇编程序来测试小代码样本,这是很好的方法。