testb指令的含义是什么?

vik*_*123 5 gdb

谁能告诉我以下的含义:

gdb> disas 0x080ed5af 

0x080ed5ac <func1+205>:        mov    0x8(%eax),%eax

0x080ed5af <func1+208>:        testb  $0x10,0x8(%eax)

0x080ed5b3 <func1+212>:        jne    0x80ed604 <dapriv_disk_op+293>

0x080ed5b5 <func1+214>:        mov    %edi,(%esp)
Run Code Online (Sandbox Code Playgroud)

是什么意思testb $0x10,0x8(%eax)

Jus*_*Sid 10

它执行两个操作数的按位AND(0x10AND 0x8(%eax)(这是位于%eax+ 0x8 指向的地址的字节值).两个操作数都没有改变,但是,指令改变了标志,最重要的是ZF如果AND的结果为零,则标记为1,否则为0.jne如果ZF等于0,则执行跳转.