长的汇编代码问题

时间:2010-12-17 12:45:27

标签: assembly

我在程序集中有一个程序,但是当我添加一些代码行时会感到困惑。 例如,当我在这个程序工作时添加一个新程序时,整个程序在某些时候停留,就像它没有完成程序但停留在一个特定的点。当我添加一些不影响程序的命令时也是如此,就像一些mov [300h],在代码开始时00h。

我知道如何解决这个问题? 我已经读过jmp命令只能跳转128个地址范围。真的吗?我可以绕过这个吗? 我已经看到一些程序有一个“近”的扩展。喜欢

  • 测试proc near
  • mov al,[0300h]
  • ...
  • 保留
  • test endp
那是什么意思?能帮帮我吗?日Thnx!

1 个答案:

答案 0 :(得分:1)

首先,mov [300h],00h不会影响程序。它可以很好地修改你的代码,所以不要这样做!

其次,只有条件跳转(Jcc)对-128 .. + 127地址范围有这个限制,所以如果你认为分支太远,那么代替

JE some_far_label

使用

JNE skip1
jmp some_far_label
skip1:

如果您还有其他问题,请发布一些代码。

编辑:mov byte [300h], 0可能会覆盖您的代码。如果您正在使用汇编程序,则为变量分配explecitely空间:

var1 db 0