1.全局变量的定义
全局变量的作用域这是整个程序,win32汇编的全局变量定义在.data或.data?段内,可以同时定义变量的类型和长度,格式是:
MASM中可以定义的变量类型相当多,具体如表3.2所示:
所有使用到变量类型的情况中,只有定义全局变量的时候类型才可以用缩写,具体使用实例如下:
.data
(1) wHour dw ? //定义一个未初始化的word类型白能量,名称为wHour;
(2) wMinute dw 10 //定义一个名为wMinute的word类型变量,其值为10;
(3) _hWnd dd ? //定义一个未初始化的dword类型变量_hWnd;
(4) word_buffer dw 100 dup (1, 2) //定义一个字数组,以0x01,0x02,0x01,0x02,...的顺序循环100遍,总共200字节;
(5) szbuffer byte 1024 dup (?) //定义一个1024字节的字缓冲区;
(6) szText db 'Hello,World!' //定义一个字符串,总共占用12字节 ;
在byte类型变量的定义中,可以用引号定义字符串和数值定义的方法混用,假设要定义两个字符串"Hello,World!"和"Hello again",每个字符串后面跟回车和换行符,最后以一个0字符结尾,可以定义如下:
2.全局变量的初始化
全局变量在定义中既可以指定初值,也可以只用问号预留空间,在.data?段中,只能用问号预留空间,因为.data?不能指定初始值,这里就有一个问题:既然可以用问好预留空间,那么在实际运行的时候,这个未初始化的值是随机的还是确定的?答案是0,所以用问好指定的全局变量如果要以0为初始值的话,在程序中可以不必特意的为它赋值。