asm中TEST和CMP的冗余线程

时间:2015-08-17 17:18:52

标签: assembly

我知道这个问题在互联网上被问到很多,但我仍然不理解。

我的问题是,"嘿,CMP和TEST之间的区别"

我知道TEST执行AND,CMP执行SUB(Kinda)

但我不确定它是如何运作的...... 我们来举个例子。

[ EAX = 0000002B ]

test al,0x10
jne BREAK
jmp CONTINUE
在这种情况下,是2B,对吗?这里发生了什么?

我相信它会像

那样

0x2B AND 0x10 = 0010 1011 AND 0001 000 = 0000 0000

CPU是否将ZF设置为1以使其进入CONTINUE?

我很困惑,感谢您的帮助,欢迎所有其他例子让它变得更好:)

1 个答案:

答案 0 :(得分:3)

AND(测试)将查看操作数之间是否任何一位匹配。一点共同就足够了。

SUB(cmp)将检查所有位是否匹配。