我不明白这个组装片段,我刚刚遇到过

时间:2013-07-21 12:11:22

标签: linux assembly nasm

我遇到了以下汇编代码,但我不明白。

hang:
  times 512-($-$$) db 0

有人可以解释一下,发生了什么事吗?

2 个答案:

答案 0 :(得分:1)

这将导致程序因无限循环而挂起,因为jmp hang跳转到自身。

答案 1 :(得分:0)

该代码用于用0填充剩余的程序(如果我没记错的话,就像'add'指令一样)。 它通常用在启动代码中,以便将mbr签名放在最后,因此,就“代码”而言,它不应该被执行。

总结:

  • 这不会停止。

  • 它用于用'00'填充程序文件,直到达到512byte(在汇编程序的输出文件中!它在运行时没有任何作用!)

  • 要暂停您的程序,请执行以下操作:

    halt:
      jmp halt