汇编语言定义变量的格式为 :【变量名】【变量类型】【数值列表】
其中,变量类型有DB,DW,DD等,分别表示变量占有的内存空间(依次为1,2,4个字节)
如:
A DB 1,2,3,4 就定义了名称为A的4个占1个字节的变量,分别是1,2,3,4(严格来说是0001,0010,0011,0100)保存在系统分配的内存空间中。
如果是A DW 1,2,3,4则保存的值为(00000001,00000010,00000011,00000100)
注意事项
由于汇编语言是面向机器的语言,没有对函数的定义,函数的实现是通过中断调用的,(一个代码段跳到另外一个代码段) 所以对全局变量和局部变量的体现是通过栈来实现的。
即:
全局变量保存在数据段中,即伪代码中声明的DATA SEGMENT,任何时刻都能调用。
而局部变量则保存在栈段中,是伪代码中声明的STACK SEGMENT,平时不调用,调用中断时把局部变量从栈里取出来。
汇编语言在数据段使用数据定义伪指令定义变量,对数据定义伪指令说明如下:
1、db((byte,字节,一字节宽)
2、dw(word,字,两字节宽)
3、dd(double word,双字,四字节宽)
各个数据定义伪指令均可以连续定义变量。
示例如下:
DATAS SEGMENT;定义数据段
BUF0 DB 1;定义一个字节型变量,名称是BUF0,初始值是01H
BUF1 DB "2";定义一个字符型变量,名称是BUF1,初始值是"2"
BUF2 DW 1;定义一个字型变量,名称是BUF2,初始值是0001H
BUF3 DD 2;定义一个双字型变量,名称是BUF3,初始值是00000002H
BUF4 DB 1 DUP(50);定义连续50个字节型变量,名称是BUF4,初始值是01H
BUF5 DB "12345678";定义一个字符型变量,名称是BUF5,初始值是"12345678"
DATAS ENDS;数据段定义结束
STACKS SEGMENT;定义堆栈段
DB 100 DUP(?)
STACKS ENDS
CODES SEGMENT;定义代码段
ASSUME CS:CODES,DS:DATAS,SS:STACKS;段寄存器关联
START:
MOV AX,DATAS
MOV DS,AX
......
CODES ENDS
END START