【问题标题】:Can the jmp instruction jump to any part of the code?jmp 指令可以跳转到代码的任何部分吗?
【发布时间】:2023-04-02 19:57:01
【问题描述】:

jmp 指令能否返回到前一个代码块,如下面的代码块,label1 会被无限次执行吗?

    label1:

      mov ax,10
      add ax,2

    jmp label1

【问题讨论】:

  • 你可以试试,也可以看你的教科书。
  • @ShmilTheCat 但是当我这样做时,控件会移回主进程,它甚至不会留在同一个进程中
  • @CSSStudent 就像 Andrew 说的,花点时间看你的课本,你可能也想 d/l 这个 PRM 并阅读它intel.com/content/www/us/en/processors/…(第 5 章指令集总结,专注于控制转移指令)
  • 既然你真正的问题是你的程序没有按照你的期望做,你应该发布你的完整程序(或者如果你的程序太大,一个最小的完整的可验证示例可以重现问题)并解释它应该做什么以及它实际上在做什么。
  • 那么我建议删除您的问题并在其他地方寻求帮助。如果您不愿意说出您的实际问题是什么,我们将无法帮助您。

标签: assembly x86-16


【解决方案1】:

一个简单的 jmp 指令可以跳转到代码的任何部分(当前段之间;也称为 JMP NEAR)。 条件跳转只能向后跳转 128 个字节,向前跳转 127 个字节(相对于当前位置;也称为 JMP SHORT)。 jmp 指令的第三个版本是 JMP FAR,它可以跳转到任何段中的任何偏移量。(JMP FAR 仅适用于 16 位实模式和内核模式)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-06
    • 1970-01-01
    • 2013-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-13
    相关资源
    最近更新 更多