一、内存中字的存储
CPU中,用16位寄存器来存储一个字。高八位存放高位字节,低八位存放低位字节。
内存中,由于内存单元是字节单元(一个单元存放一个字节),则一个字要用两个连续的内存单元来存放。低地址存放低位字节,高地址存放高位字节。
例如:
如图3.1,用0、1两个内存单元存放数据20000(4E20H)
字单元:存放一个字型数据(16位)的内存单元,由两个地址连续的内存单元组成。
在后面的学习中,将起始地址为N的字单元简称为N地址字单元。例如:一个字由2、3两个内存单元组成,起始地址为2,所以可以说这是2地址字单元。
练习:
0地址单元存放的字节型数据是多少?
0地址字单元存放的字型数据是多少?
1地址字单元存放的字型数据是多少?
答:
20H
4E2000H
4686(124EH)
二、DS和[address]
CPU 要读写一个内存单元的时候, 必须先给出这个内存单元的地址, 在8086PC 中,
内存地址由段地址和偏移地址组成。8086CPU 中有一个DS 寄存器, 通常用来存放要访问数据的段地址。
比如我们要读取10000H 单元的内容, 可以用如下的程序段进行。
mov bx,1000H
mov ds,bx
mov al,[0]
上面的3 条指令将10000H( 1000:0)中的数据读到al 中。
mov指令的几种传送:
- 将数据直接送入寄存器
- 将一个寄存器的内容送入另一个寄存器
- 将一个内存单元中的内容送入一个寄存器中
- 语法:mov 寄存器名,内存单元地址
- […]表示一个内存地址 ,例如[0]中的0表示偏移地址,而段地址存在ds中,指令执行时自动获取。
- 8086CPU不支持