2014-11-21 70 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