比较后的条件跳转(jg)(cmp)

时间:2014-10-15 18:49:18

标签: assembly

以下是我的书中提供的一段代码。问题是否执行 bx,1或ax,10将被执行。看看代码我想说Ax,10将被执行,在线答案说bx,1将被执行,我的模拟器说两者都被执行了。有人会帮我理解这里到底发生了什么吗?

mov cx,5
not cx
mov dx,10
cmp cx,dx
jg jump1
mov bx,1
jump1:
mov ax,10

1 个答案:

答案 0 :(得分:1)

让我们来看看。在CMP线之前,CX的值为-6(NOT为5的结果)。 JG命令执行签名比较 - 它不会将负数视为大正数(JA和JB)。

因此CX(-6)不大于DX(10),并且不采用条件跳转。所以这两行都执行。