dbsx 发表于 2009-5-16 17:14:50

有一个比较指令我一直没弄明白是怎么回事

在算法中经常看到这类语句:比如 TEST AL,AL,或   TEST EAX,EAX,
我不明白的是明明是一样的寄存器,有什么好比较的饿,这种指令是什么意思呢

asdfslw 发表于 2009-5-17 09:10:55

test 是 and(逻辑与)的意思,与 and 不同的是,这条指令不改变目的操作数的值,仅仅根据结果置标志位。使用方式TEST AL,AL,或 TEST EAX,EAX,后面常常跟jz/je,jnz/jne这些条件跳转指令,用来测试寄存器是否为0。
个人理解,仅供参考。/:014

dbsx 发表于 2009-5-20 10:06:32

原帖由 asdfslw 于 2009-5-17 09:10 发表 https://www.chinapyg.com/images/common/back.gif
test 是 and(逻辑与)的意思,与 and 不同的是,这条指令不改变目的操作数的值,仅仅根据结果置标志位。使用方式TEST AL,AL,或 TEST EAX,EAX,后面常常跟jz/je,jnz/jne这些条件跳转指令,用来测试寄存器是否为0。
个 ...
o...原来是用来测试寄存器是否为0 的哦,谢谢,明白拉

但是 ,我想这2个AL 的指代对象应该不一样把

[ 本帖最后由 dbsx 于 2009-5-20 10:07 编辑 ]

老海 发表于 2009-5-21 08:43:56

我理解是不样,一个是固定值,另一个是你输入的字符通过运算后得出应该赋1还是赋0来决定的。

dbsx 发表于 2009-5-22 23:02:20

原帖由 老海 于 2009-5-21 08:43 发表 https://www.chinapyg.com/images/common/back.gif
我理解是不样,一个是固定值,另一个是你输入的字符通过运算后得出应该赋1还是赋0来决定的。
那这个结果该怎么计算呢,比如test al,al ,一个al是1,另一个al是5(会不会出现0,1意外的值呢),这个怎么计算

老海 发表于 2009-5-27 07:13:20

不可能出现1或0以外的,一个al是1,另一个al是5,test是and计算,也就是“与”运算,即:0001 and 0101,结果是1。

[ 本帖最后由 老海 于 2009-5-27 07:20 编辑 ]

千江月 发表于 2009-5-28 22:28:08

有整数值就是1,否则为0

dbsx 发表于 2009-5-29 20:42:45

谢谢各位,理解了
页: [1]
查看完整版本: 有一个比较指令我一直没弄明白是怎么回事