第3章 寄存器(内存访问)
3.1 内存中字的存储
●CPU中用16位寄存器来存储一个字,高8位存放高位字节,低8位存放低位字节
●字单元即存放一个字型数据的内存单元,由两个地址连续的内存单元组成;高地址内存单元中存放字型数据的高位字节,低地址内存单元中存放字型数据的低位字节
●将起始地址为N的字单元称为N地址字单元,比如:2地址字单元由2、3两个内存单元组成
3.2 DS和[address]
CPU要读写一个内存单元的时候,必须先给出这个内存单元的地址,在8086PC中,内存地址由段地址和偏移地址组成。8086CPU中有一个DS寄存器,通常用来存放要访问的数据的段地址。比如我们要读取10000H单元的内容,可用以下程序段:
mov bx,1000H
mov ds,bx
mov al,[0]
上面的三条指令将10000H(1000:0)中的数据读到al中。
下面详细说明指令的含义:
mov al,[0]
前面我们使用mov指令,可完成两种传送:(1)将数据直接送入寄存器;(2)将一个寄存器中的内容送入另一个寄存器。
也可以使用mov指令将一个内存单元中的内容送入一个寄存器中。mov指令格式为: mov 寄存器名, 内存单元地址。
“[]”表示一个内存单元,“[0]”中的0表示内存单元的偏移地址,段地址默认放在ds中。
由于8086CPU硬件设计的问题,8086CPU不支持将数据直接送入段寄存器。如mov ds,1000H是非法的。所以我们得使用一个寄存器进行中转,如上例:
(1).先将段地址1000H放入中转寄存器bx中,然后再放入ds
mov bx,1000H
mov ds,bx
(2).完成数据从1000:0单元到al的传送
mov al,[0]:“[]”表示一个内存单元,“[0]”中的0表示内存单元的偏移地址,段地址默认放在ds中。
问题3.2
写几条指令,将al中的数据送入内存单元10000H中。