【问题标题】:Why JB isn't doing accurate CMP [duplicate]为什么 JB 不做准确的 CMP [重复]
【发布时间】:2018-06-25 07:50:05
【问题描述】:

在emu8086中,我已经写了这段代码

include 'emu8086.inc'

org 100h

MOV AX,-1  
CMP AX,0
JB case1 

case2:
    printn 'This line should not be displayed'

case1:
    print 'I want this line'

ret

它应该只打印第一种情况,但在这种情况下,输出显示了两种情况。我做错了什么?

【问题讨论】:

标签: assembly emu8086


【解决方案1】:

JB(如果低于则跳转)用于类似于JNAE(如果不高于或等于则跳转)的无符号整数。

因此,如果您想与有符号整数(在您的情况下为 -1)进行比较,则必须使用 JL(如果小于则跳转)或 JNGE(如果不大于或等于则跳转)

【讨论】:

  • 帮助了,谢谢
  • jb 不仅与jnae“相似”。它是 same 机器指令的别名(相同的二进制操作码)。两者都是jc 的别名,我个人认为它是“基本”别名,因为它涵盖了正在测试的标志,而jb / jnae 只是比较辅助别名,但这绝对只是我的意见。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-12
  • 2012-12-28
  • 2019-06-26
  • 1970-01-01
  • 1970-01-01
  • 2016-05-07
  • 2019-08-16
相关资源
最近更新 更多