二、汇编之寄存器

我们想用汇编语言控制我们想控制的外设,就必须通过控制器发送控制命令,那这些控制命令存放在哪里,就放在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

mov al,[0]

上面3条指令将1000H(1000:0)中的数据读到al中

5、栈

每个平台的CPU都有自己的栈的设计,8086CPU也不例外,栈的形式是LIFO后进先出,PUSH表示如栈,POP表示出栈。如:push ax 把寄存器 ax的数据送入栈中,pop ax把栈中的数据取出来赋值给ax,8086栈操作是以字为单位的,也就2个字节。

下图为8086CPU对push指令的执行过程

8086CPU对pop指令的执行过程如下图

(0)

相关推荐