为什么and结果返回错误“”
左上角图中,为何and运算后eax为0呢,是我xdbg的问题吗,请问and和test分别什么情况下设置zf值为1或0?
https://pic3.58cdn.com.cn/nowater/webim/big/n_v28804dc17acbc441c91526890f0cec979.png
谢谢! and指令是按位与操作,它将两个操作数的对应位进行与运算,并将结果存储在目标操作数中。在这个特定的情况下,and运算后eax为0的原因可能是两个操作数的对应位都为0。
关于zf(零标志位),它是一个标志位,用于指示上一次运算结果是否为零。在and指令中,如果运算结果为零,则zf被设置为1,表示结果为零;如果运算结果不为零,则zf被设置为0,表示结果不为零。
而test指令则是进行逻辑与运算,并不改变操作数的值,只是根据运算结果设置zf标志位。当test指令的操作数与操作数进行逻辑与运算后,如果结果为零,则zf被设置为1;如果结果不为零,则zf被设置为0。
所以,and和test指令在设置zf值时的情况是相似的,都是根据运算结果来设置的。 isdkz 发表于 2023-10-25 13:25
and指令是按位与操作,它将两个操作数的对应位进行与运算,并将结果存储在目标操作数中。在这个特定的情况 ...
谢谢!如图所示,10 and 3,结果为2才对,有什么原因导致eax为0 吗 vigiles163com 发表于 2023-10-25 13:35
谢谢!如图所示,10 and 3,结果为2才对,有什么原因导致eax为0 吗
10 and 3 ?
10和3的前面还有个0x了
sh-5.1$ cat main.c
#include <stdio.h>
int main(void) {
printf("10 and 3: %d\n", 10 & 3);
printf("0x10 and 0x3: %d\n", 0x10 & 0x3);
return 0;
}
sh-5.1$ ./main
10 and 3: 2
0x10 and 0x3: 0
sh-5.1$
人造人 发表于 2023-10-25 14:02
谢谢!and运算时,十进制10,或十六进制0x10,都转为二进制1010吗,
看你的代码c语言里似乎有区别。
xdbg里,总是默认带上0x前缀,但终究是二进制位比较,为何结果为0呢 vigiles163com 发表于 2023-10-25 14:14
谢谢!and运算时,十进制10,或十六进制0x10,都转为二进制1010吗,
看你的代码c语言里似乎有区别。
xd ...
看起来你得去补一下进制转换的知识了
vigiles163com 发表于 2023-10-25 14:14
谢谢!and运算时,十进制10,或十六进制0x10,都转为二进制1010吗,
看你的代码c语言里似乎有区别。
xd ...
0x10转成二进制是多少?
人造人 发表于 2023-10-25 15:18
0x10转成二进制是多少?
{:10_266:} 刚刚有人提醒了,应该是a 。谢谢!
页:
[1]