算法

1、xor eax,eax

常見用法

0041000 call [0041100]

0041006 je 042000

......

0041100 ......   //call 調用的子函數 start

......

0041120 xor eax,eax

0041122 retn  //call end

說明:(1)0041120 xor eax,eax 這句的作用是把eax賦0(使得call函數的返回值爲0),同時把ZF標誌位置1,

所以,0041006 je 042000 這句的跳轉會實現。

(2)如果是or的話,eax的值不變,同時把ZF標誌位置0。

 

2、test檢測位指令

test是把二個操作數進行邏輯“與”操作,並根據運算結果設置相應的標誌位,但並不保存該運算結果,所以,不會改變指令中的操作數。在該指令後,通常用JE、JNE、JZ和JNZ等條件轉移指令。

指令的格式:TEST  Reg/Mem, Reg/Mem/Imm

受影響的標誌位:CF(0)、OF(0)、PF、SF和ZF(AF無定義)

call XXXXXXXX
test al,al/eax,eax...
je/jne...

 

3、彙編語言中,CXECX只能遞減,所以,循環計數器只能從大到小。在程序中,必須先把循環次數賦給循環計數器。

發佈了36 篇原創文章 · 獲贊 6 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章