微机原理与接口技术笔记-第二章(8086/8088系统结构和80X86微处理器)
第二章
8086/8088系统结构
一、微处理器
1.1概述
- 简称CPU,由运算器、控制器和寄存器三部分组成。
- 运算器:算术和逻辑运算。
- 控制器:包括指令寄存器、指令译码器、和控制电路。可实现指令译码、调用和取操作数或操作数地址的功能。
- 寄存器:暂存 操作数和运行结果。
1.2微处理器内部结构
- 控制器:完成指令的读取、寄存、译码和执行。
- 工作寄存器:暂存寻址和计算过程的信息。
- I/O控制逻辑:处理输入/出操作。
- ALU:所有的算术、逻辑、移位计算。
1.3微处理器的外部结构
- 微处理器的外部结构指:CPU与外部设备和I/O组成的结构。它们之间的联系是:
- 控制器总线:在CPU与外部设备或I/O口之间传输控制信息和状态信息。
- 地址总线: 在CPU和外存或I/O口之间传输地址码。
- 数据总线: 在CPU和外存或I/O口之间传输数据。
二、8086/8088
2.1 8086/8088的功能结构
-
寄存器结构:
-
通用寄存器
-
数据寄存器:(分为高八位和低八位,只能用来存放数据,即寄存操作数或操作数结果)
- AX:累加器
- BX:基址寄存器
- CX:计数寄存器
- DX:数据寄存器
-
指针寄存器:(对存储器操作数寻址时,用于形成20位的地址码,而其本身只有16位无法作为地址码)
- SP:堆栈指针:存放堆栈操作的段内偏移地址(段地址由SS段寄存器提供)
- BP:基址指针:对堆栈内寻址时,存放段内偏移地址的一部分
-
变址寄存器:(同上)
- SI:源变址寄存器:存放某些间接寻址时段内偏移地址
- DI:目标变址寄存器:存放某些间接寻址时段内偏移地址
-
段寄存器:
- CS:代码段寄存器:存放当前程序所在段的段地址,其内容<<4再加上指令指针IP的内容就是下一条要执行的指令地址。
- DS:数据段寄存器:存放当前数据的段地址,其内容<<4再加上按指令中存储器寻址方式计算出来的偏移地址,即为对数据段指定位置的读写。
- SS:堆栈段寄存器:存放当前堆栈段的地址,其内容<<4再加上SP的内容即为对堆栈进行操作的地址。
- ES:附加段寄存器:存放附加段的段地址,是进行字符串操作时的目的区地址。
-
控制寄存器:
- IP:指令指针:存放下一条要执行指令的偏移地址。
-
FLAGS:标志寄存器:状态字PSW寄存器,存放状态特征和控制标志。
-
状态标志:
- CF:进位标志(1有效)
- PF:(1的个数)奇偶标志(1有效)
- AF:辅助进位标志(1有效)
- ZF:(运算结果)零标志(1有效)
- SF:符号标志(1为负)
- OF:溢出标志,超出带符号数表示的范围(1有效)
-
状态标志:
-
例如:
SF=1;PF=0;ZF=0;CF=0;AF=0;OF=1;-
控制标志
- DF:方向控制(1递减)
- IF:可屏蔽中断允许标志位(1允许中断)
- TF:陷阱标志(1单步执行)
-
控制标志
-
-
通用寄存器
- 工作过程:程序运行时,IP指令指针将要运行的指令地址传输到ALU总线,IP本身自加指向下一条指令地址。再通过一系列计算计算出20位的地址码,通过总线接口单元BIU按照20位地址码从外部存储器或I/O接口寄存器将指令读取到指令队列,再通过8位Q总线将指令传回执行单元进行运行,运行时通过一系列计算计算出20地址码读取外部存储器或I/O接口寄存器的数据。
2.2 8086/8088的存储器组织和I/O组织
2.2.1存储器的地址空间和数据存储格式
- 地址空间:以字节(8位)存储.有20条地址总线,即1MB空间
- 数据存储格式:两个字节=一个字,字地址的高八位存储高字节地址,低八位存储低字节地址.
2.2.2存储器的分段和物理地址的形成
存储器的分段
- 为什么要分段?
- 16位的地址寄存器最多有216种变化,即直接寻址的空间有64KB,而物理地址空间有1MB,故地址寄存器无法对物理地址空间进行管理.
- 如何分段?
-
将能整除16的地址作为各逻辑段的起始地址,该起始地址的高十六位也称段地址.其余的地址均可通过段地址加偏移来计算得到.而偏移也是16位的,故十六位的段地址最大段为216=64KB的范围.(逻辑段可以紧密相连也可以重叠)
以能整除十六的高十六位为段地址,1MB = 220=1048576/16=65536=216,故有216个段地址,每个地址寄存器是16位,故每一个段地址配上其偏移的空间有:216=64KB
物理地址的换算
- 逻辑地址:段地址:偏移地址
- 物理地址=段地址<<4+偏移地址
2.2.3段地址和偏移地址来源
用户的程序数据存储在代码段,数据段,堆栈段,附加段中,而这些段的地址存储在CS,DS,SS,ES中.其偏移地址的来源与段地址的来源如下:
2.2.4 8086/8088 I/O口组织
- 每个I/O端口有唯一一个端口地址;
- 需要I/O端口寄存器的原因是CPU速度远快于I/O设备,I/O端口相当于起缓冲作用;
- 8086的端口控制线是16位,共可以控制216个I/O端口,8088的端口控制线是8位,共可以控制28个I/O端口.