字的存储
字单元的概念:存放一个字型数据(16位)的内存单元,由两个地址连续的内存单元组成。高地址内存单元中存放字型数据的高位字节,低地址内存单元中存放字型数据的低位字节。因此,一个内存单元可以作为一个字单元的高地址内存内存单元,也可以作为另一个字单元的低地址内存单元。
以后会将起始地址为N的字单元简称为N地址字单元。
DS寄存器与[address]
8086CPU中有一个 DS 寄存器,通常用来存放数据的段地址。
8086CPU不支持将数据直接送入段寄存器中的操作,因此如果要将数据送入段寄存器,必须经过某一通用寄存器中转:
[address] 表示一个内存单元,其中的数字 address 表示内存单元的偏移地址。指令执行时,8086CPU自动读取 DS 寄存器中的数据为内存单元的段地址。 例如,如果DS寄存器中的值是1000H,那么“ [0] ”代表内存单元10000H中的内容,“ [4E27] ”代表内存单元14E27H中的内容。
可以通过设置 DS 寄存器中的值,来将一个段地址范围当做数据段使用。
字节与字的传输
可以使用 MOV 指令在内存空间与寄存器之间传输数据,例如:
由于8086CPU有16根数据线,因此可以一次性传输16位数据,即一个字。也就是说,可以使用 MOV 指令在16位寄存器和字单元间传输数据:
移动前后,高地址和高位字节匹配,低地址和低位字节匹配。
假设移动前,DS:0
处的字节为34H,DS:1
处的字节为2CH,那么以上语句执行后,AX 寄存器的值为2C34H,AH 高位为2CH,AL 低位为34H,DS:2F
处的字节为34H,DS:30
处的字节为2CH。
基本汇编指令:MOV、ADD与SUB
之前已经介绍了 MOV 和 ADD 指令。
MOV 指令们可以在通用寄存器、段寄存器和内存单元中互相传输数据,也可以将数字直接移动到通用寄存器上:

SUB
register
,
number
register
中的值减去
number
对应的值。它的操作和
ADD
指令相反,用法类似。ADD 和 SUB 指令都不能操作段寄存器。
