作者在 2009-11-02 22:27:43 发布以下内容
1. 间接操作数
间接操作数可以是任何用方括号括起来的32位通用寄存器(EAX,EBX,ECX,EDX,
ESI,EDI,EBP和ESP),寄存器里面存放数据的偏移。
PTR与间接操作数的联合使用:操作数的大小通常不明确,如:inc [esi]编译器在编译时会产生“operand must have size”的错误信息,可以使用PTR操作符明确地表示操作数的尺寸:inc BYTE PTR [esi]
2. 变址操作数
变址操作数将常量加到寄存器上以产生一个有效的地址,任何32位通用寄存器都可以
作为指针寄存器,MASM中允许使用两种不同的格式:
constant[reg]
[constant+reg]
3. 指针
基于intel体系的基本指针类型:NEAR和FAR。
保护模式使用NEAR指针被存储在双字节变量中,还可以使用OFFSET操作符。
定义变量时,TYPEDEF操作符允许创建与内建类型特性完全相同的用户自定义类型。
如:PBYTE TYPEDEF PTR BYTE ;创建了指向字节的数据类型PBYTE
.data
arrayB BYTE 10h,20h,30h,40h
ptr1 PBYTE ?
ptr2 PBYTE arrayB