64位汇编中的布尔指令

多数情况下,64位模式中的64位指令与32位模式中的操作数是一样的,比如源操作数是16/8位常数,而目标操作数是64位的内存操作数或者64位的寄存器那么目标操作数中的所有位都会受到影响。

.data
	;在这里声明变量
	val qword 0ffffffffffffffffh;

.code 
	;这里写自己的代码
	mov rax,val;          RAX=FFFFFFFFFFFFFFFF
	and rax,80h;          RAX=0000000000000080
	mov rax,val;          RAX=FFFFFFFFFFFFFFFF
	and rax,8080h;        RAX=0000000000008080  
	mov rax,val;          RAX=FFFFFFFFFFFFFFFF
	and rax,808080h;      RAX=0000000000808080

源操作数不能为16/8位内存操作数或者寄存器,因为操作数大小不匹配。

如果源操作数是32位的常数,而目标操作数是64位的内存操作数或者64位的寄存器那么目标操作数只有低32位会受到影响,高32位不变。

mov rax,val          RAX=FFFFFFFFFFFFFFFF
and rax,80808080h    RAX=FFFFFFFF80808080

总而言之,32位操作数是一个特殊情况,需要与其它大小的操作数分开考虑。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值