x86 - jg 指令在经典 Intel 处理器上有什么作用?

标签 x86

对于代码:

cmp $5, %eax
jg 804940f

这通过执行 %eax - $5 进行比较,然后设置一个标志(如果它更大、等于或负数),对吗?如果标志指示 %eax 大于 $5,那么 jg 将继续访问该地址?

最佳答案

它确实做了减法,但不保留结果。然后它相应地设置标志。您对第二行的看法也是正确的,如果它更大,那么它会跳转,如果不是,那么它会跳过跳转并继续执行接下来的内容。

编辑:如果您是汇编新手,您可能还会发现访问标志寄存器的内容很有帮助。在 Intel 汇编中有几种方法可以做到这一点,如果您需要低 8 位,那么您可以执行 lahf ,它将它们加载到 ah 中。如果你想要寄存器的全部内容,那么你可以使用pushf和popf。我希望这会有所帮助。

关于x86 - jg 指令在经典 Intel 处理器上有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7549471/

相关文章:

linux - 汇编中多个 2 位输入的问题

assembly - "conditional call"在 amd64 上的性能

function - as8088中的变量初始化

assembly - 为什么相同的 lgdt opCode 在 objdump 和 bochs 上显示差异

x86 - 原子操作是如何在硬件层面实现的?

c# - x86 和 x64 中编译项目的问题

assembly - 为什么带-1 的 IDIV 会导致浮点异常?

android - 为 x86 编译的 APK 可以上传到 Amazon Appstore 吗?

windows - 使用 NASM 编译 Windows 可执行文件

assembly - NASM - 如何将 8 位寄存器移动到完整的 32 位寄存器?