1 微型计算机的硬件组成
微型计算机系统的硬件由运算器、控制器、存储器、输入设备和输出设备五大基本部件组成。
1.1 微处理器
微处理器包含运算器和控制器,微处理器的性能基本决定了计算机的性能
1.2 协处理器
协处理器用于特定任务的处理,以减轻系统微处理器的负担,是微型计算机系统的选配硬件。
1.3 内存储器(内存、主存)
内存储器用于存放计算机正在运行的程序和用到的数据等,分为随机存取存储器RAM和只读存储器ROM两大类。
RAM接受程序的控制,可由用户写入数据或读出数据,但是断电后数据会消失。RAM可以用来临时存放程序、输入数据和中间结果等。
ROM中的信息由厂家预先写入,一般用来存放自检程序、配置信息等。通常只能读出而不能写入,断电后信息不会丢失。
1.4 总线控制逻辑
微型计算机系统采用总线结构,总线是连接计算机各组成部件的公共数据通路。在微型计算机系统中,总线分片内总线、片级总线和系统总线。
主板与外部设备之间的数据传输必须通过系统总线。
1.5 外存储器
外存储器用来存储大量暂时不参加运算或处理的数据和程序,是主存的后备和补充,常用的有硬盘、光盘、优盘...
2 8086微处理器结构
8086是Intel系列的16位微处理器,有16根数据线
和20根地址线
,可寻址的内存地址空间为$2^{20}B=1MB$;I/O地址空间为$2^{16}B=64KB$;使用单一的+5V电源,时钟频率为4.77~10MHZ,引脚与TTL电平兼容。
2.1 8086的内部结构
8086的内部结构由EU(执行部件)和BIU(总线接口部件)两部分组成,这两个部件可以并行工作。
2.2 EU(执行部件)
EU由算术逻辑单元(ALU)、8个通用寄存器、标志寄存器和控制电路
组成。ALU可完成8位或16位数的算术或逻辑运算。
EU负责指令的执行,即从总线接口部件BIU的指令队列取指令,指令执行后向BIU送回运算结果,同时把运算结果的状态特征保存到标志寄存器中。EU不直接与外部系统相连。
2.3 BIU(总线接口部件)
BIU由段寄存器、指令指针寄存器(IP)、地址加法器、内部暂存器、字节指令队列缓冲器和总线控制逻辑组成
,负责CPU与存储器、I/O设备之间的数据传送。
BIU完成以下操作:取指令送给指令队列→配合执行部件从指定的内存单元或者外设端口中取数据→将数据传送给执行部件或者把执行部件的操作结果传送到指定的内存单元或外设端口中。
2.3.1 地址加法器
8086有20位地址,但内部所有的寄存器都是16位的;存储单元的20位物理地址由段地址和偏移地址确定;地址加法器是8086内部计算存储单元物理地址的功能部件,可以根据16位段地址和16位段内偏移地址计算出20位的物理地址
。
2.3.2 段寄存器
8086系统中,段地址存放于段寄存器中。8086内部有4个16位段寄存器,它们是:CS(代码段寄存器)
、DS(数据段寄存器)
、SS(堆栈段寄存器
)和ES(附加段寄存器
)。
2.3.3 指令指针寄存器IP
指令指针寄存器IP是16位的寄存器,保存下一条要取出的指令所在存储单元的16位偏移地址。
2.3.4 内部暂存器
内部暂存器用于暂存内部数据。该部件对用户透明(即感觉不到它的存在),用户在编程时无权访问。
2.3.5 指令队列缓冲器
8086指令队列缓冲器有6字节,采用“先进先出”策略,暂时存放BIU从存储器中预取的指令。一般来讲,EU执行完一条指令后,可立即从指令队列中取指令执行,省去了CPU等待取指令的时间,提高了CPU的效率。
2.3.6 总线控制逻辑
总线控制逻辑发出总线控制信号,实现存储器的读/写控制和I/O的读/写控制。它将CPU内部总线与外部总线相连,控制CPU与外部电路进行数据交换
3 8086的引脚特性
4 8086微型计算机系统的硬件组成与组织
4.1 8086系统的硬件组成
8086的硬件组成除了微处理器外还有:时钟发生器8284、地址锁存器8282、数据收发器8286
- 最小模式下系统的组成
把MN/MX引脚连至电源
,则8086工作于最小模式。最小模式也称为单处理器模式。
- 最大模式下系统的硬件组成
把MN/MX引脚接地
,则8086工作于最大模式。最大模式就是多处理器系统模式。
最大模式与最小模式的主要区别就是在最大模式下,需要增加一片8288来对8086CPU发出的控制信号进行变换和组合,以得到对存储器或I/O端口的读/写信号和对锁存器、总线收发器的控制信号。
4.2 8086的存储器组织
4.2.1 存储器空间
在8086中存储器按字节为单位
进行组织和分配地址,8086具有1MB的存储空间,按照$ 00000H \sim FFFFFH $来编址,这唯一的地址码称为物理地址。
8086的1MB存储器分别被分为两个512kb的存储体,分别是奇体和偶体。奇体的地址是奇数,偶体单元的地址是偶数。奇体的数据线与系统数据总线的高8位AD15~AD8
相连,偶体的数据线与系统数据总线的低8位AD7~AD8
相连。地址线A19~A1可以同时寻址奇体和偶体,BHE/S和Ao作为奇体和偶体的选择信号。BHE/S7=0时选中奇体;Ao=0时选中偶体。
4.2.2 存储器分段管理
由于8086CPU提供20位地址,但8086中可用来存放地址的寄存器,如IP、SP、BX、SI等都是16位的,只能直接寻址64KB。为了寻址1MB存储空间,8086CPU采用了典型的存储器分段技术。
分段后,对存储器的寻址操作不再直接用20位的物理地址,而是采用段地址
加段内偏移地址
的二级寻址方式。
- 段地址
段地址是16位无符号二进制数,可存放在段寄存器DS(数据段)、CS(代码段)、SS(堆栈段)、或ES(附加段)。 - 偏移地址
把某一存储单元相对于段地址的段内偏移量称为偏移地址(也称有效地址EA)。偏移地址是16位无符号二进制数,可存放在IP、SP、BX、SI、DI、BP中或直接出现在指令中。 - 逻辑地址
采用分段结构的存储器中,把通过段地址和偏移地址来表示的存储单元的地址称为逻辑地址,记为:段地址:偏移地址。 - 物理地址
$物理地址=段地址\times10H+偏移地址$,物理地址的范围为$ 00000H \sim FFFFFH $
4.2 8086寄存器结构
寄存器是CPU内部用来存放地址、数据和状态标志的部件。8086内部有14个16位寄存器和8个8位寄存器。按用途可以分为:数据寄存器、指针和变址寄存器、段寄存器、指令指针寄存器和标志寄存器
。
- 数据寄存器
- 指针和变址寄存器
寄存器 | 一般用法 | 隐含用法 |
---|---|---|
SP(堆栈指针寄存器) | 保存堆栈栈顶偏移地址,与SS配合来确定堆栈在内存中的位置 | 圧栈、出栈操作中隐含指示栈顶 |
BP(基址指针寄存器) | 1.保存16位数据 2.保存堆栈栈内存储单元的偏移地址 | |
SI(原变址寄存器) | 1.保存16位数据 2.保存数据段内存储单元的偏移地址 | 串操作指令中隐含与DS配合,确定源串在内存中的位置 |
DI(目的变址寄存器) | 1.保存16位数据 2.保存数据段内存储单元的偏移地址 | 串操作指令中隐含与ES配合,确定目标串在内存中的位置 |
- 段寄存器
CS(代码段寄存器),存放当前执行的程序所在段的起始地址。CS的值乘以16D后加上IP的值,就形成了下一条要取出指令所在的内存单元的物理地址。
DS(数据段寄存器),存放当前数据段的起始地址。DS的值乘以16D后加上指令中存储器寻址方式指定的偏移地址,就形成了要进行读/写的数据段中指定内存单元的物理地址。
SS(堆栈段寄存器),存放当前堆栈段的起始地址。堆栈是按照“后进先出”原则组织的一个特殊内存区域。堆栈操作数的地址由SS的值乘以16D后加上SP的值形成。
ES(附加段寄存器),存放当前附加段的起始地址。附加段是附加的数据段,也用于数据的保存。另外,串操作指令将附加段作为其目标操作数的存放区域。 - 指令指针寄存器IP
存放当前代码段的偏移地址,与CS联用,IP不能直接读/写,程序或自动修改IP值, - 标志寄存器
标志寄存器FR,也称为程序状态寄存器PSW
5.1 状态标志
状态标志记录程序中运行结果的状态信息,是根据指令的运行结果由CPU目动设置的。
- CF进位标志:记录运算时最高位上产生的进位或借位值。有进位或借位时CF置1,否则CF清0。
- PF奇偶标志:运算结果的低8位中有偶数个1时PF置1,否则PF清0
- AF辅助进位标志:记录运算时第3位产生的进位或借位值。有进位或借位时AF置1,否则AF清0。
- ZF零标志:运算结果为零时ZF置1,否则ZF清0。
- SF符号标志:运算结果为负数时SF置1,否则SF清0。
- OF溢出标志:运算结果超出机器数表示范围时,称为溢出,此时OF置1,否则OF清0。
5.2 控制标志
控制标志可以编程设置,用于控制处理器执行指令的方式。控制标志设置之后,可对后面的操作产生控制作用。 - DF方向标志:控制串操作指令中存储器地址的变化方向。DF=0时,串操作过程中存储器地址会自增值,即进行从低地址到高地址方向的串操作;DF=1时,则串操作过程中存储器地址会自动减值,即进行从高地址到低地址方向的串操作。
- IF中断允许标志:控制外部可屏蔽中断。IF=0时,CPU不能对可屏蔽中断请求作出响应,即禁止外部可屏蔽中断;IF=1时,CPU可以接收可屏蔽中断请求,即允许外部可屏蔽中断。
- TF单步标志:控制处理器进入单步工作方式。TF=1时,处理器进入单步工作方式;TF=0时,处理器正常工作。