16
我正在看一些小的彙編代碼,我無法理解TEST指令及其用法。我在看下面的代碼在一個循環的末尾:`test`指令做了什麼?
8048531: 84 c0 test al,al
8048533: 75 dc jne 8048511 <function+0x2d>
我瞭解測試的方式是,它的工作原理有點像AND運算,並設置一些標誌。我想我真的不明白這些旗幟是如何運作的。 test al,al
給我看起來像它檢查相同的低位,並將始終得到相同的結果。
有人可以解釋一下嗎?
所以爲了澄清一下,TEST何時會產生一個會使JNE跳躍的結果呢? – danielhc 2011-05-14 13:31:52
如果測試寄存器爲零,則置位ZF,否則清除該標誌。 JNE根據該標誌跳轉(或不跳轉)。 – 2011-05-14 13:38:59
@danielhc:JNE指令也稱爲JNZ - 「如果不爲零則跳轉」。在你的情況下,如果寄存器a1不爲零,將跳轉。 – user200783 2011-05-14 13:45:35