【问题标题】:Assembly: Comparing registers using Ja汇编:使用 Ja 比较寄存器
【发布时间】:2014-10-22 00:30:24
【问题描述】:
  1. 哪些选项包含以下伪代码的正确实现? (假设所有值都是无符号的):

如果(eax > ebx) 移动dl,5; 别的 mov dl,6;

a.
    cmp eax,ebx
    ja  L1
    mov dl,6
    jmp L2
L1: mov dl,5
L2:
b.
    cmp eax,ebx
    ja  L1
    mov dl,5
    jmp L2
L1: mov dl,6
L2:
c.
    cmp eax,ebx
    jbe L2
    mov dl,5
    jmp L2
L1: mov dl,6
L2:
d.
    cmp eax,ebx
    jna L2
    mov dl,5
    jmp L1
L1: mov dl,6
L2

: 我对cmp eax, ebx 是否做 eax > ebx 或 ebx > eax 感到困惑。感谢您的宝贵时间。

【问题讨论】:

  • 当您对指令的工作方式感到困惑时,请查阅指令集参考。

标签: if-statement assembly x86 compare


【解决方案1】:

cmp eax, ebx比较两个值,根据结果设置各种flags

ja 如果进位和零标志被清除,则跳转。也就是说,如果之前的比较结果不等于或低于。

【讨论】:

    猜你喜欢
    • 2014-04-04
    • 2020-01-30
    • 2021-03-25
    • 1970-01-01
    • 2016-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多