检测位指令TEST的用法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

检测位指令TEST的用法
我知道TEST是检测位指令的,但它是怎么影响标志位的呢,看了一些资料但还是不明白
假如我用了test ax,11111111b后, 标志位会是什么样子的
我反汇编一些程序,老是见有如下命令行,很不理解,大家给解释下
0043CA56 . 85C0 TEST EAX,EAX
0043CA58 . 0F85 9F000000 JNZ L2Wind1.0043CAFD


TEST - Test For Bit Pattern
//位测试指令
Usage: TEST dest,src
//用法:TEST dest,src
Modifies flags: CF OF PF SF ZF (AF undefined)
//受影响的标志位有:
//你要注意的是这一部位才对。你上面的指令test eax,eax后面跟着的是jnz指令,jnz指令作用于零标志位的,若零标志位不为零则跳,所以test eax,eax是测试eax是否为零的指令,若eax有数据,不管是什么数据(111也好,101也好),jnz都会跳。
//更新一下,若eax有数据,不管是111也好,222也好,只要他们两个操作数作逻辑与运算之后,结果不为零,则jnz都会跳。而jz则不跳。
CF //进位标志,主要作用于JC/JNC指令。
OF //溢出标志,主要作用于JO/JNO指令
PF //奇偶标志,主要作用于JP/JPE/JNP/JPO指令
SF //符号标志,主要作用于JS/JNS指令
ZF //零标志,主要作用于JZ/JE/JNZ/JNE指令
AF //辅助进位标志,不过未定义。
Performs a logical AND of the two operands updating the flags
//执行两个操作数的逻辑与运算,并更新标志位。
register without saving the result.
//该操作只修改标志位,不保留运算结果值。

相关文档
最新文档