我想知道这个操作意味着什么?
Test EDX, 200
我在DWORD
中有EDX
个值,如:
1A1B1C00
当我test EDX, 200
时
然后是JE
,跳跃。为什么? EDX
不等于200
。
我想了解更多有关Test EDX, 200
含义的信息。
答案 0 :(得分:5)
test
执行AND
而不修改操作数(它只修改一些标志,如ZF
等)。 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
由于0
在二进制文件中是1
,因此指令{{1}}的意图是测试{{1}}中的值并查看第9位(距离第9位)从0开始正确计数是{{1}}或{{1}},如果它是零则进行跳转。
答案 1 :(得分:0)
要了解汇编指令的作用,我建议使用Google。在Google中,您只需编写指令的名称,在本例中为test
,类似intel instruction
(适用于英特尔说明):
Google: test intel instruction
根据上面链接的Google搜索结果,您还会发现某些服务器具有根据指令名称命名的不同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