汇编语言第三版(王爽著)(第二章.寄存器)

一个典型的CPU由运算器,控制器,寄存器,输入输出设备等器件构成。
运算器进行信息处理,寄存器进行信息存储,控制器控制各种器件进行工作,内部总线连接各种器件,在它们之间进行数据的传送。
不同的CPU,寄存器的个数,结构是不相同的。
8086CPU有14个寄存器 AX BX CX DX CS SS DS ES SP BP IP SI DI PSW

2.1 通用寄存器

8086CPU的所有寄存器都是16位的,可以存放两个字节。
AX BX CX DX用来存放一般性的数据,称为通用寄存器。为了保证兼容,通用寄存器可以分为两个独立可使用的8位寄存器。

2.2 字在寄存器中的存储

出于对兼容性的考虑,8086CPU可以一次性处理以下两种尺寸的数据
1.字节,Byte,可以存在8位寄存器中。
2.字:word,一个字两个字节,这两个字节分别称为这个字的高位字节和低位字节。

2.3 几条汇编指令

汇编指令
正确的指令

检测点2.1

检测点2.1
检测点2.1

2.4 物理地址

我们知道,CPU访问内存单元时,要给出内存单元的地址。所有的内存单元构成的存储空间是一个一维的线性空间。每一个内存单元在这个空间都有一个唯一的地址,我们将这个地址称为物理地址。

2.5 16位结构的CPU

一个16位的CPU有以下的特性
运算器一次最多可以处理16位的数据,寄存器的最大宽度为16位,寄存器和运算器之间的通路为16位。 内存单元的地址在送上地址总线之前,必须在CPU中处理,传输,暂存,对于16位的CPU,能一次性处理,传输,暂存16位的地址。

2.6 8086CPU给出物理地址的方法

8086CPU有20位地址总线,可以传送20位地址,达到1MB的寻址能力。8086CPU又是16位结构,在内部一次性处理,传输,暂时存储的地址为16位。从8086CPU的内部结构来看,如果将地址从内部简单地发出,那么它只能送出16位的地址,表现出的寻址能力只有64KB。
8086CPU采用一种在内部用两个16位地址合成的方法来形成一个20位物理地址
8086CPU相关部件的逻辑结构
如图2.6所示,当8086CPU要读写内存时:
1.CPU相关部件提供两个16位的地址,一个称为段地址,一个称为偏移地址
2.段地址和偏移地址通过内部总线送入一个称为地址加法器的器件
3.地址加法器将两个16位地址合成一个20位的物理地址
4.地址加法器通过内部总线将20位物理地址送入输入输出控制电路
5.输入输出控制电路将20位物理地址送上地址总线
6.20位物理地址被地址总线传送到存储器

地址加法器采用 物理地址 = 段地址x16+偏移地址
地址加法器的工作过程
段地址x16有一个更为常用的说法是左移4位。位是指2进制位。(机器只能处理二进制信息)

2.7 “段地址x16+偏移地址 = 物理地址”的本质含义

这个本质含义是CPU在访问内存时,用一个**基础的地址(段地址X16)**和一个相对于基础地址的偏移地址相加,给出内存单元的物理地址。

2.8 段的概念

内存并没有分段,段的划分来自于CPU。
分段
重点:基础地址定位段的起始地址,用偏移地址定位段中的内存单元。(末位置减初位置+1)
CPU可以用不同的段地址和偏移地址形成同一个物理地址
数据在21F60内存单元中:1.数据在2000:1F60单元中 2.数据在内存的2000H段中1F60单元中。

2.9 段寄存器

前面说到8086CPU在访问内存时要由相关部件提供内存单元的段地址和偏移地址,送入地址加法器合成物理地址。是谁在提供段地址呢,是段寄存器。8086CPU中旅有四个段寄存器,是:CS,DS,ES,SS.

2.10 CS和IP

CS和IP时8086CPU中关键的两个寄存器。他们指示了CPU当前要读取指令的地址
CS为代码段寄存器,IP为指令指针寄存器
在8086PC中,任意时刻,设CS中的内容为M,IP中的内容为N,8086CPU将从内存Mx16+N单元开始,读取一条指令并执行。
也可以这样表述 在8086PC中,任意时刻,CPU将CS:IP指向的内容当做指令执行。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
1.从CS:IP指向的内存单元读取指令,读取的指令进入指令缓冲器。
2.IP = IP+所读取指令的长度,从而指向下一条指令。
3.执行指令,转到步骤1.

在8086CPU加电启动或复位后(即CPU刚开始工作时)CS和IP被设置为 CS = FFFFH,IP = 0000H,即在刚启动的时候,FFFF0H是开机后执行的第一条指令。

我们在第一章中讲过,在内存中,指令和数据没有任何区别,都是二进制信息,CPU在工作时有时把信息看作数据,有时指令。什么时候把信息看作指令呢?CPU将CS:IP指向的内存单元中的内容看作指令。
如果,内存中的一段信息曾被CPU执行过的话,那么,它所在的内存单元必然被CS:IP指向过。

2.11 修改CS,IP的指令

在CPU中,程序员能够用指令读写的部件只有寄存器。CPU从何处执行指令是由CS,IP中的内容决定的,程序员可以通过改变CS,IP中的内容来控制CPU中的内容。
8086CPU中的大部分值都可以用mov指令改变。mov称为传送指令
能够改变CS,IP的内容的指令称为转移指令,:jmp;
例如 jmp 2AE3:3,执行后 CS=2AE3H,IP=0003H,CPU将从2AE33H读取指令。
若想仅修改IP中的内容,可用形如 “jmp 某一合法寄存器”(作用好比mov IP,ax;当然这条命令并不存在)的指令完成。
例如 jmp ax.指令
执行前:ax = 1000H,CS = 2000H,IP = 0003H
执行后:ax = 1000H,CS = 2000H,IP = 1000H

2.12 代码段

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值