为了用汇编语言控制我们想控制的外围设备,需要通过控制器发送控制命令。 其控制命令保存在哪里,保存在CPU内部的构成要素之一的寄存器中。
1、CPU内部一般由4个部分组成
(1)运算器)进行信息的处理
(2)寄存器进行信息的存储
)3)控制器控制各种设备进行动作
(4)内部总线)在内部设备之间交换数据2、汇编指令的示例
2、理解物理地址正如其名,物理地址是硬件存储器单元的地址,CPU通过地址总线访问物理地址。
物理地址(8086CPU的示例)=段地址*16偏置地址
为了更好地理解物理地址,让我举个例子
上面的照片:
1 )从学校到图书馆走2826米,这个2826米被认为是图书馆的物理地址
2 )从学校到图书馆走2000米,从体育馆走826米到图书馆,最初的距离是2000米,是相对于起点的基础地址。 (起点是我们存储器地址的开始地址。 第二个距离是826米,是到基础地址的偏移地址。
这相当于基本地址=段地址*16、物理地址=基本地址偏移地址
3、什么是寄存器?
段寄存器是存储段地址的存储器,常用的段寄存器是CS、DS、SS、ES。
我们主要使用CS:IP这两个寄存器。 这两个寄存器分别是代码段寄存器和指令指针寄存器。 下图简单地表示8086CPU的读取、指令执行的结构
在上图中,在CS:IP中找到物理地址,“地址加法器”“输入输出控制电路”“20是地址总线”“D8,23,01 -在汇编中”数据总线“指令缓冲区”“执行控制器”AX通用寄存器
4、DS段寄存器的应用
mov bx,1000H
mov ds.bx
莫亚尔,0
上述3个命令将1000h(1000:0 )的数据读取至al
5、栈
每个平台的CPU都有自己的堆栈设计。 8086CPU也不例外。 堆栈的形式在LIFO之后出现,推式表示堆栈,POP表示堆栈。 例如,push ax将寄存器ax的数据发送到堆栈,pop ax取出堆栈内的数据,分配到ax。 8086堆栈操作以字为单位,即2字节。
下图为通过8086CPU执行推送指令的步骤
通过8086CPU执行pop指令的步骤如下图所示