2013-07-17 105 views
3

任何一個可以告訴我下面的意思:testb指令是什麼意思?

GDB> disas 0x080ed5af

0x080ed5ac:MOV 0x8中(%eax中),%EAX

0x080ed5af:TESTB $ 0x10,0x8(%EAX )

0x080ed5b3:JNE 0x80ed604

0x080ed5b5:MOV%EDI(%ESP)

什麼是我TESTB $ 0x10,0x8(%eax中)的安寧

回答

7

它執行按位與兩個操作數(0x10 AND 0x8(%eax)(這是,位於該地址處的字節的值由%eax + 0x8中)指向。兩個操作數都沒有改變,但是,指令改變標誌,最重要的是ZF標誌爲1,如果AND的結果爲零,否則爲0。如果ZF等於0,則以下jne執行跳轉。

+0

謝謝sid。還有一件事,如果eax寄存器具有空值,那麼將會發生什麼? gdb> info寄存器eax 0x0 0 ecx 0x1 1 – vik123

+1

是否會產生恐慌 – vik123