x86汇编_PTR运算符_笔记_9

PTR运算符可以用来重写一个已经被声明过的操作数的大小类型。左右操作数容量必须一致,当不一致时需要用PTR运算符限定容量。

data

mydouble dword 12345678h

.code

mov ax, mydouble ;这是不允许的,因为mydouble被声明为4字节元素,ax寄存器只能存放2个字节。属于左右操作数不一致的情况。

mov ax, word ptr mydouble ;虽然mydouble是4字节元素,但word ptr表示从mydouble中只提取2个字节放入ax。ax=5678,因为是小端模式,mydouble的起始位置第一个字节是78,第二个字节是56。

mov ax, word ptr mydouble+1 ;ax=3456

mov ax, word ptr mydouble+2 ;ax=1234

mov ax, word ptr mydouble+3 ;超出了mydouble数据的范围一个字节,ax的低位是12,高位未知。

PTR必须与一个标准汇编数据类型一起使用,包括:byte, sbyte, word, sword, dword, sdword, fword, qword, tbyte。

.data
mydouble word 1234h, 5678h

.code
main PROC
    mov eax, 0
    mov eax, dword ptr mydouble  ;mydouble被定义为2字节元素,左右操作数必须同样大小的原则,用 
                                  dword ptr来提取4字节才能交给eax寄存器。
    invoke exitprocess, 0
main ENDP
END main

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值