用DB定义的数据,每个数据占用1B的存储器。可以出现用单或双引号括起来的单个或多个字符,每个字符占1B,按照它们出现的顺序用ASCII代码存储。DUP称为“重复定义符”,表示定义若干个相同的数据。伪指令DW用来定义字数据,每个数据占用2B,数据的高位存放在地址较大的单元里。注意:用DW定义字符串时,只能是两个,而用DB定义时,没有这个限制。
操作数:有3种类型的操作数:寄存器操作数、立即数操作数和存储器操作数。
寄存器操作数又包括段寄存器和通用数据、地址寄存器。段寄存器:CS,DS,SS,ES。通用数据寄存器:AX,BX,CX,DX。通用地址寄存器:SP,BP,SI,DI。在这么多的寄存器中,只有4个寄存器可以用来间接寻址:BX,BP,SI,DI(在8086中)。在这之中,默认情况下,BP与段寄存器SS搭配,其余3个与DS搭配。
立即数寄存器:二进制、十进制或十六进制常数,可求值的表达式、字符、标号等都可以用作操作数。
存储器操作数:它是由段基址和偏移地址组成。大多数情况下,指令使用DS寄存器的内容作为操作数的段基址,所以指令中不需要再指出段基址。为此,常常在程序开始处把数据段的段基址装入DS寄存器中。段基址的问题解决了。剩下的就是偏移地址的问题了。存储器的偏移地址可以由几个部分组合而成,合成后得到的偏移地址称作有效地址。指出偏移地址的方法有两种:直接的和间接的。所谓直接地址就是在指令里直接写出存储单元偏移地址。注意点:当变量名A定义之后,它的属性就确定下来了,而直接地址[0000H]却没有固定的属性,它可以代表字节地址,也可以代表字地址甚至是双字地址。所谓间接地址就是把存储单元的偏移地址事先装入某个寄存器中