1、变量常用类型缩写
字节 byte db
字 word dw
双字 dword dd
注:
• 缩写第一个字母表示 data,第二个字母表示类型首字母。
• 型缩写只能用在全局变量的定义中。
2、变量作用域类型
2.1、全局变量
varName Type ?
varName Type initValue
varName Type initValue1,initValue2,initValue3,...
varName Type count DUP( initValue)
varName Type count DUP( initValue1,initValue2,initValue3,...)
注:
• 没有初始化的全局变量的默认值是 0。
2.2、局部变量
Local varName1 , varName2:Type1 , varName3[count]:Type2 , ...
注:
• 局部变量在定义是不能指定初始值。
• 没有初始化的局部变量的默认值是 随机数。
• Win32默认的数据类型是dword。
2.3、Mnemonic
名称、类型和数量,名称、数量和类型。
3、变量值的存储格式
3.1、小尾序储存
把每一个变量值为排序集合,以变量值包含的字节(两位十六进制数字)为排序元素,倒序排列储存。
3.2、小尾序实例
bTest1 db 12h
wTest2 dw 1234h
dTest3 dd 12345678h
内存中为:
12 34 12 78 56 34 12
4、变量的大小、数量和地址
4.1、大小和数量伪指令
TYPE 返回变量和数组中单个元素的字节大小
LENGTHOF 返回数组中元素的数量
SIZEOF 返回变量或数组的字节总数
4.2、变量地址指令和伪指令
OFFSET 伪指令,获取全局变量地址
lea 80386指令,获取局部变量地址
ADDR 伪指令,只能用在invoke中获取全局或局部变量地址
4.3、使用等号伪指令获取变量字节长度的技巧
list byte 10,11,13,16
listSize = ($-list)