③ 01110111B,因为C6?C7?1,所以产生溢出。 ④ 00100011B,因为C6?C7?0,所以未产生溢出。
6. 若使与门的输出端输出高电平,则各输入端的状态是什么?
解:各输入端为高电平。
7. 若使与非门的输出端输出低电平,则各输入端的状态是什么?
解:各输入端为高电平。
8. 如果74LS138译码器的Y4端输出低电平,则C、B、A三个输入端的状态分别是什么?
解:C、B、A三个输入端的状态分别是‘1’,‘0’,‘0’。
第2章 8088/8086微处理器
2.1 知识要点
1. 8088与8086在硬件结构上的主要区别:
8086的外部数据总线宽度为16位,而8088的外部数据总线宽度为8位;另外8086的指令预取队列长度为6字节,而8088的指令预取队列长度为4字节。
2. 8088包含两大功能部件,即执行单元(EU,Execution Unit)和总线接口单元(BIU,Bus
Interface Unit)。
1) 执行单元EU主要完成指令的译码和执行。执行单元通过EU控制电路从BIU中取出
指令,经过指令译码形成各种定时控制信号,向EU内各功能部件发出相应的控制命令,以完成指令所规定的操作。
2) 总线接口单元是8086/8088同外部联系的接口。它负责所有涉及外部总线的操作,包
括取指令、读操作数、写操作数、地址转换和总线控制等。BIU内部设置指令预取队列,每当指令队列有两个或两个以上的字节空间,且执行单元未向BIU申请读/写存储器操作数时,BIU顺序地预取后续指令的代码,并填入指令队列中。当EU执行的是转移指令时,则BIU清除当前的指令预取队列的内容,从新的地址取回指令,并立即送到EU去执行,然后,从后续的指令序列中取回指令填满队列。
3. 8088地址线的宽度为20位,可寻址的最大内存空间为220=1MB。
4. 8088CPU对内存的管理:8088CPU内部的寄存器的宽度只有16位,如何把16位的二进制
数转换成20位物理地址?8088CPU采用将内存储器分段的方法来解决这一问题,即将1MB的地址空间分为16个64KB的段,然后用段基址加上段内偏移地址来访问存储器。
分段的具体方法是在分段时,要求段的起始单元的物理地址是16的整数倍,即XXXX0H。其中,把前16位(XXXXH)称为段基址,段内各存储单元地址相对于该段起始存储单元地址
的位移增量称为段内偏移量。
段基地址和段内偏移量称为逻辑地址,逻辑地址通常写成XXXXH :YYYYH的形式,其中XXXXH为段基址;YYYYH为段内偏移地址。物理地址与逻辑地址的关系如下: 物理地址=段基址×16+段内偏移
例如,逻辑地址A562H :9236H对应的物理地址是AE856H。
物理地址是机器硬件操作时所使用的地址;逻辑地址是应用人员在编程时所使用的地址。由逻辑地址形成物理地址是由总线接口部件中的电路实现的。 5. 8086/8088CPU内部的各寄存器的作用
AX、BX、CX和DX通用寄存器一般用于存放参与运算的数据或运算的结果。 SP:用于存放堆栈栈顶的段内偏移量。 BP:用于存放访问内存时的偏移地址。
SP和BP也可以用来存放数据,它们的默认段寄存器都是SS。
SI和DI通常在间接寻址方式中存放操作数的偏移地址。在串操作指令中,DI的默认段寄存器是ES。SI和DI也可以用来存放数据。
CS:代码段寄存器,用于存放代码段的段基址。 DS:数据段寄存器,用于存放数据段的段基址。 SS:堆栈段寄存器,用于存放堆栈段的段基址。 ES:附加段寄存器,用于存放附加段的段基址。
IP:指令指针寄存器,用于存放CPU即将执行的下一条指令在代码段中的段内偏移地址。 FLAGS:标志寄存器,用于存放指令执行结果的特征。 6. 8088CPU管脚在两种工作模式下的功能。 7. 8088CPU的读、写时序。
8. 8088有两种工作模式:最小模式和最大模式。如图2-1和图2-2所示。
+5VMN/MX8088CPU8284时钟发生器RES+5VCLKREADYRESETIO/MRDWRALESTB8282OESTB8282A15~A8OESTB8282A15~A8A19~A16A19~A16AD7~AD0OEA7~A0D0~D7DT/RDEN8286TOE图2-18088最大模式总线
MN/MXS0S1S28284时钟发生器+5VRES8088CPUA19~A8AD7~AD0CLKREADYRESET8288总线控制器CLKS0S1S2INTAMEMRMEMWIORIOWDENDT/RALESTB8282OE地址总线存储器I/O接口8286TOE数据总线
图2-2 8088最大模式下的总线
2.2 习题解答
1. 8086/8088CPU由哪两大功能部分所组成?简述它们的主要功能?
解:8086/8088CPU由EU和BIU两大功能部分组成。
执行单元EU主要完成指令的译码和执行。执行单元通过EU控制电路从BIU中取出指令,经过指令译码形成各种定时控制信号,向EU内各功能部件发出相应的控制命令,以完成指令所规定的操作。
总线接口单元是8086/8088同外部联系的接口。它负责所有涉及外部总线的操作,包括取指令、读操作数、写操作数、地址转换和总线控制等。BIU内部设置指令预取队列,每当指令队列有两个或两个以上的字节空间,且执行单元未向BIU申请读/写存储器操作数时,BIU顺序地预取后续指令的代码,并填入指令队列中。当EU执行的是转移指令时,则BIU清除当前的指令预取队列的内容,从新的地址取回指令,并立即送到EU去执行,然后,从后续的指令序列中取回指令填满队列。
2. 什么是指令流水线?指令流水线需要哪些硬件支持?
解:指令流水线是指8086/8088CPU内部的执行单元EU和总线接口单元BIU通过指令预取队列协同工作从而实现指令的并行执行。指令流水线最主要的硬件支持是BIU内部的指令预取队列。