【第三章】寄存器(内存访问)

3.1内存中字的存储

在CPU中,用16位寄存器来存储一个字。高8位存放高位字节,低8位存放低位字节。在内存中存储时,由于内存单元是字节单元(一个单元存放一个字节),则一个字要用两个地址连续的内存单元来存放。这个字的低位字节存放在低地址单元中,高位字节存放在高地址单元中

1.PNG

3.2 DS和[Address]

CPU要读写一个内存单元的时候,必须先给出这个内存单元的地址,在8086CPU中内存地址由段地址和偏移地址组成。

8086CPU中有一个DS(Data Segment)寄存器,用来存储要访问数据的段地址。如果我们要读取10000H单元的内容,用如下代码实现:

mov bx,1000
mov ds,bx
mov al,[0]

这时mov指令的语法为:mov 寄存器名,内存单元地址

内存单元地址是我们的偏移地址。mov指令中的[]说明对象是一个内存单元,[0]说明这个内存单元的偏移地址是0。执行指令时,内存会自动从DS寄存器中读取段地址

把内存段地址送入寄存器时,8086CPU在硬件层面不支持直接将数据放入段寄存器(但可以从内存中读取)。因此需要先将地址放入一个通用寄存器中,再从通用寄存器中放入段寄存器

3.5 数据段

对于8086CPU,在编程时可以将一组内存单元定义为一个段。我们可以将一组长度为N(N≤64KB)、地址连续、起始地址为16的倍数的内存单元当作专门存储数据的内存空间。

我们可以将数据段的起始段地址存入DS,再根据需要访问具体单元