`test`指令有什么作用?

dan*_*lhc 26 x86 assembly

我正在查看一些小的汇编代码,我无法理解TEST指令及其用法.我在循环结束时查看以下代码:

8048531:    84 c0                   test   al,al
8048533:    75 dc                   jne    8048511 <function+0x2d>
Run Code Online (Sandbox Code Playgroud)

我理解TEST的方式是它有点像AND运算符,它设置了一些标志.我想我真的不明白旗帜是如何运作的.test al,al对我来说,它看起来像检查相同的低位,并将始终得到相同的结果.

谁能解释一下?

Bo *_*son 17

它只是为了设置标志而对自己测试寄存器.零和非零值的结果将不同.

  • @danielhc:JNE指令也称为JNZ - "如果不为零则跳转".在您的情况下,如果寄存器al不为零,则将进行跳转. (7认同)