2014-11-21 56 views
0

下面是给我们(的评论都是我自己):JB和值寄存器

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.我是正确还是?谢谢!在eax

回答

2

的操作不直接影响edx值,但既然已经初始化为1和归零依赖于操作的结果上eax,它是间接影响。

jb是一个未签名的操作,并且按照你所说的操作。请注意,7FFFh低于8000h因此跳跃将被采取,从而跳过mov edx, 0。因此,edx中的最终值将是1

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

+0

所以,跳转发生后,L1执行,那么我们不会返回到主PROC,并执行mov edx,0?谢谢! – user3727648 2014-11-21 19:37:36

+0

这是一个跳跃,而不是一个呼叫。它不会返回。如果你喜欢,可以换一个'goto'。 – Jester 2014-11-21 19:39:28

+0

谢谢你为我清理。非常感激! – user3727648 2014-11-21 19:43:25