汇编中的jb和寄存器中的值

时间:2014-11-21 19:25:53

标签: assembly x86

以下是给我们的(评论是我自己的):

mov edx, 1          ; moves 1 into edx register
mov eax, 7FFFh      ; moves 7FFFh into eax register
cmp eax, 8000h      ; compares 8000h to whatever is in the eax register (7FFFh)
jb L1               ; jump to L1 if below (if leftOp < rightOp)
mov edx, 0          ; moves 0 into edx register
L1:                 ; label

我们被要求在执行此代码后在EDX中给出最终值。现在,对eax的操作是否会影响edx中的值?我不认为他们这样做,而且edx的最终价值是0.我是正确还是?谢谢!

1 个答案:

答案 0 :(得分:2)

eax上的操作不会直接影响edx的值,但由于它已初始化为1,因此归零取决于eax上的操作结果,它间接受到影响。

jb是一个未签名的操作,按你说的做。请注意,7FFFh 低于8000h,因此将跳转,从而跳过mov edx, 0。因此,edx中的最终值为1

您可以运行此代码并亲自查看。