asm中TEST和CMP的冗余线程



我知道网上有很多人问这个问题,但是我还是不明白。

我的问题是,"嘿,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 ?

我很困惑,谢谢你的帮助,欢迎所有其他的例子使它更好:)

AND (test)将检查是否有任何在操作数之间匹配。一个共同的位就足够了。

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

最新更新