2012-09-20 18 views

回答

3

and ebx,1按位與運算,結果在任一0(如果EBX爲偶數)或1(否則)

shl ebx,2移位2個比特(這是相當於乘以4)離開。 ebx現在是0或4.

jmp [ebx+Tab]從Tab + ebx獲取地址並跳轉到該地址。 Tab是四個字節指針的數組,並且ebx是0或4,因此它指向第一個(F1)或第二個(F2)元素。 如果偶數跳轉到F1(返回原始值),否則跳轉到F2(其中eax被清零並返回零)。

3

它採用的EAX拷貝到EBX,採用最右邊的如果F1(ebx爲0,eax爲偶數)返回原始數字(AND)=> 0或1,則將其四倍化(SHL)=> 0或4,跳轉到跳轉表的計算地址=> F1或F4 eax,如果F2(ebx是4,eax不均勻)返回0(eax-eax)。

F3和F4未使用。

+1

但dd的每個是4個字節,所以4的偏移量是指F2,而不是F4。 – harold

+0

沒錯,我相應地更新了我的答案。 – lilalinux