我想知道這個操作是什麼意思?組裝測試指令
1A1B1C00
當我做test EDX, 200
再JE
,跳躍拍攝:
Test EDX, 200
我EDX
喜歡有DWORD
值。爲什麼? EDX
不等於200
。
我想知道更多關於Test EDX, 200
的含義。
我想知道這個操作是什麼意思?組裝測試指令
1A1B1C00
當我做test EDX, 200
再JE
,跳躍拍攝:
Test EDX, 200
我EDX
喜歡有DWORD
值。爲什麼? EDX
不等於200
。
我想知道更多關於Test EDX, 200
的含義。
A test
執行AND
而不修改操作數(它只修改一些標誌,如ZF
等)。 A je
只需測試ZF
(零標誌)並跳轉(如果設置)。
所以Test EDX, 200
將AND
在EDX
值與0x200
並設置ZF
到1
如果AND
的結果是0
。在你的情況,這將使我們:
0x1A1B1C00 AND 0x00000200 -> 0x00000000
由於0x0200
是二進制0000 0010 0000 0000
,指令Test EDX, 200
的意圖是EDX
測試值,看看第9位(從右側9位從0開始計數)是0
或1
,如果它爲零則跳轉。
對寄存器執行AND 200有什麼意義? –
若要查看是否設置了一位(或一組位中的至少一位)。我想你的問題應該是'test,edx,0200h',因爲測試一個位比較常見。 –
是的,它是測試,edx,0200h。這是什麼意思? –
要了解裝配說明的用途,我建議您使用Google。在谷歌,你可以只寫指令的名稱,在這種情況下test
,讓人覺得intel instruction
(英特爾指令):
Google: test intel instruction
從谷歌搜索你上面鏈接的結果也可以找到指出,某些服務器的命名不同的x86彙編指令單獨的頁面,根據該指令的名稱:
http://web.itu.edu.tr/kesgin/mul06/intel/instr/test.html
,因爲它說在網頁上鍊接上面:
TEST - Test For Bit Pattern
Usage: TEST dest,src
Modifies flags: CF OF PF SF ZF (AF undefined)
Performs a logical AND of the two operands updating the flags
register without saving the result.
要找出一些其他的指令做什麼,例如cmpxchg
,所有你需要做的是替換地址的指令的名稱,所以這將是:
http://web.itu.edu.tr/kesgin/mul06/intel/instr/cmpxchg.html
最後,有關英特爾彙編的最終信息來源是英特爾軟件開發人員手冊,並且它們非常實用且免費提供,格式爲pdf:
Intel® 64 and IA-32 Architectures Software Developer Manuals
Combined Volume Set of Intel® 64 and IA-32 Architectures Software Developer’s Manuals
可能重複[\ test \'指令的作用是什麼?](http:// stackoverflow。com/questions/6002079/what-does-test-instruction-do) – CompSciFly
related:關於['test eax,eax']的問題(https://stackoverflow.com/questions/147173/testl-eax-against -eax)有很多很好的答案,但是大多數關注於'test'的具體用例:檢查寄存器的當前值,而不是僅使用不同的第二操作數來測試某些位。 –