1. 8086CPU由哪几个部件构成?它们的主要功能各是什么?
8086 CPU由指令执行部件EU和总线接口部件BIU两个部份组成。指令执行部件主要功能是执行指令。总线接口部件的主要功能是完成访问存储器或I/O端口的操作:
? 形成访问存储器的物理地址;
? 访问存储器取得指令并暂存到指令队列中等待执行;
? 访问存储器或I/O端口以读取操作数参与EU运算,或存放运算结果。 2. 什么是逻辑地址?什么是物理地址?它们各自如何表示?如何转换?
程序中使用的存储器地址称为逻辑地址,由16位“段基址”和16位“偏移地址”(段内地址)组成。段基址表示一个段的起始地址的高16位。偏移地址表示段内的一个单元距离段开始位置的距离。访问存储器的实际地址称为物理地址,用20位二进制表示。将两个16位二进制表示的逻辑地址错位相加,可以得到20位的物理地址:
物理地址=段基址×16 + 偏移地址 在32位CPU的保护模式下,“逻辑地址”的表示产生了一些变化,请参考第8章的相关内容。
3. 什么是“堆栈”?它有什么用处?在使用上有什么特点?
堆栈是内存中的一块存储区,用来存放专用数据。例如,调用子程序时的入口参数、返回地址等,这些数据都按照“先进后出”的规则进行存取。SS存放堆栈段的段基址,SP存放当前堆栈栈顶的偏移地址。数据进出堆栈要使用专门的堆栈操作指令,SP的值在执行堆栈操作指令时根据规则自动地进行修改。
4. 设X=36H,Y=78H,进行X+Y和X-Y运算后FLAGS寄存器各状态标志位各是
什么?
X=36H=00110110B Y=78H=01111000B (+ Σ= 10101110B CF=0, SF=1, OF=1, PF=0, ZF=0, X=36H=00110110B Y=78H=01111000B (- Δ= 10111110B CF=1, SF=1, OF=0, PF=1, ZF=0,
5. 按照传输方向和电气特性划分,CPU引脚信号有几种类型?各适用于什么场合? CPU引脚传输的信号按照传输方向划分,有以下几种类型:
输出:信号从CPU向外部传送; 输入:信号从外部送入CPU;
双向:信号有时从外部送入CPU,有时从CPU向外部传送。
双向信号主要用于数据信号的传输;输出信号用于传输地址信号和一些控制信号;输入信号主要用于传输外部的状态信号(例如READY)和请求(中断、DMA)信号。
按照信号的电器特性划分,有以下几种类型:
一般信号:用来传输数据/地址信号时,高电平表示“1”,低电平表示“0”;用来
表示正逻辑的控制/状态信号时,“1”表示有效,“0”表示信号无效;用来表示负逻辑的控制/状态信号时,“0”表示有效,“1”表示信号无效。
三态信号:除了高电平、低电平两种状态之外,CPU内部还可以通过一个大的电
阻阻断内外信号的传送,CPU内部的状态与外部相互隔离,也称为“悬浮态”。CPU放弃总线控制权,允许其他设备使用总线时,将相关信
号置为“悬浮态”。
8. 分析8086CPU两个中断输入引脚的区别,以及各自的使用场合。
INTR用于输入可屏蔽中断请求信号,电平触发,高电平有效。中断允许标志IF= 1时才能响应INTR上的中断请求。
NMI用于输入不可屏蔽中断请求信号,上升沿触发,不受中断允许标志的限制。CPU一旦测试到NMI请求有效,当前指令执行完后自动转去执行类型2的中断服务程序。
NMI引脚用于连接CPU外部的紧急中断请求,例如内存校验错,电源掉电报警等。INTR引脚用于连接一般外部设备的中断请求。
9. 什么是时钟周期、总线周期、指令周期?它们的时间长短取决于哪些因素?
时钟周期:CPU连接的系统主时钟CLK一个周期的时间。CLK信号频率越高,时钟周期越短。
总线周期:CPU通过外部总线对存储器或I/O端口进行一次读/写操作的过程称为总线周期。8086CPU总线周期一般由四个时钟周期组成,存储器/IO设备(接口)速度不能满足CPU要求时,可以增加一个或多个时钟周期。
指令周期: CPU执行一条指令的时间(包括取指令和执行该指令所需的全部时间)称为指令周期。指令周期的时间主要取决于主时钟的频率和指令的复杂程度,它也受到存储器或IO设备接口工作速度的影响。
习 题 二
1. 内存储器主要分为哪两类? 它们的主要区别是什么? 内存储器分为随机存取存储器RAM(Radom Access Memory)和只读存储器ROM(Read Only Memory)两类。
RAM中信息可以按地址读出,也可以按地址写入。RAM具有易失性,掉电后原来存储的信息全部丢失,不能恢复。
ROM 中的信息可以按地址读出,但是在普通状态下不能写入,它的内容一般不能被改变。ROM具有“非易失性”,电源关闭后,其中的信息仍然保持。
2. 说明SRAM、DRAM、MROM、PROM和EPROM的特点和用途。
SRAM:静态RAM,读写速度快,但是集成度低,容量小,主要用作Cache或小系统的内存储器。
DRAM:动态RAM,读写速度慢于静态RAM,但是它的集成度高,单片容量大,现代微型计算机的“主存”均由DRAM构成。
MROM:掩膜ROM,由芯片制作商在生产、制作时写入其中数据,成本低,适合于批量较大、程序和数据已经成熟、不需要修改的场合。
PROM:可编程ROM,允许用户自行写入芯片内容。芯片出厂时,所有位均处于全“0”或全“1”状态,数据写入后不能恢复。因此,PROM只能写入一次。
EPROM:可擦除可编程只读存储器,可根据用户的需求,多次写入和擦除,重复使用。用于系统开发,需要反复修改的场合。
3. 已知一个SRAM芯片的容量为8K×8b,该芯片有一个片选信号引脚和一个读/写控
制引脚,问该芯片至少有多少个引脚?地址线多少条?数据线多少条?
根据存储芯片地址线数量计算公式,k=log2(1024*8)= log2(213)=13,即总计有13根地址线。另有8根数据线、2根电源线。所以该芯片至少有25(=13+8+1+1+2)根引脚。 4. 巳知一个DRAM芯片外部引脚信号中有4根数据线,7根地址线,计算它的容量。
根据存储容量计算公式S=2k×I,可得该芯片的存储容量为:214*4=16K×4bit(位),也可表示为64Kb=8KB(字节)。
5. 32M×8b的DRAM芯片,其外部数据线和地址线为多少条?
根据存储芯片地址线数量计算公式,k=log2(1024*1024*32)= log2(225)=25,即需要25根地址线。但是,由于DRAM芯片的地址采用分时输入的方法,所以实际需要的地址线只有理论值的一半,此处为13根。数据线8根。 6. DRAM为什么需要定时刷新?
DRAM靠MOS管极间电容存储电荷的有无决定所存信息是0还是1,由于漏电流的存在,它存储的信息不能长时间保存,需要定时重新写入,称为“刷新”。 7. 74LS138译码器的接线如图2.28所示,写出Y0、Y2、Y4、Y6所决定的内存地址范围。
从图看出,该存储系统的片内地址线有13根(A12-A0),是一个由8KB存储芯片组成的存储系统,A17地址线不确定。它的地址分布为:
00?0, CBA?, ????, ????, ???? 其中,CBA作为译码输入,与输出选择有关;“?”表示可以为“0”,也可以为“1”。 于是:
Y0对应的内存地址范围是:
00000H—01FFFH;或20000H—21FFFH。
图2-28 译码
Y2对应的内存地址范围是:
04000H—05FFFH;或24000H—25FFFH。
Y4对应的内存地址范围是:
08000H—09FFFH;或28000H—29FFFH。
Y6对应的内存地址范围是:
0C000H—0DFFFH;或2C000H—2DFFFH。 8.
9. 下列容量的ROM芯片除电源和地线,还有多少个输入引脚和输出引脚?写出信号名
称。
(1)64×4 (2)512×8 (3)128K×8 (4)16K×8 (5)1M×16 根据存储容量计算公式可得以上各芯片的地址、数据引脚分别为: 64×4: 地址线k= log2(64)= log2(26)= 6根,数据线=4根; 512×8: 地址线k= log2(512)= log2(29)= 9根,数据线=8根;
128k×8:地址线k= log2(128*1024)= log2(217)= 17根,数据线=8根; 16k×8: 地址线k= log2(16*1024)= log2(214)= 14根,数据线=8根; 1M×16: 地址线k= log2(1024*1024)= log2(220)= 20根,数据线=16根。 此外,所有ROM芯片都需要一根片选信号引脚;
对于PROM,EPROM通常还需要“输出允许”和“编程脉冲”输入引脚。 EEPROM芯片除了有“片选”、“输出允许”和“写允许”外,通常还有表示“写入完成”的状态信号引脚。
10. 已知RAM芯片的容量为
(1)16K×8 (2)32K×8 (3)64K×8 (4)2K×8 如果RAM的起始地址为3400H、则各RAM对应的末地址为多少? 存储器的末地址=首地址+芯片内字节数(容量)-1 上述各芯片对应RAM的末地址为:
16K×8:末地址是3400H+4000H-1= 73FFH 32K×8:末地址是3400H+8000H-1= B3FFH 64K×8:末地址是3400H+10000H-1= 133FFH 2K×8: 末地址是3400H+800H-1= 3BFFH
11. 如果存储器起始地址为1800H,末地址为1FFFH,求该存储器的容量。 该存储器的容量为:
(1FFFH-1800H+1)×8 = 800H×8,该存储器有2048×8个位,也可以写作2KB。 12. 有一个存储体,其地址线15条,数据线8条,则
1)该存储体能够存储多少个汉字?
2)如果该存储体由2K×4位的芯片组成,需要多少片? 3)采用什么方法扩展?分析各位地址线的使用。
该存储体容量为215×8=32KB,存储一个汉字需要二个字节,因此,它能够存储16384(16K)个汉字。
需要2K×4位的芯片32片,[(32K×8)/(2K×4)=32 ]。 可采用字位全扩展方法,由2片4位的芯片组成1组8位的存储单元,16组扩展成32K的8位存储体。芯片直接使用的地址线(片内地址)11根(A0-A10),另外需要4根高位地址,连接到4-16译码器输入端,产生16个译码信号用作16个芯片组的片选信号。剩余的地址线用来确定该存储体的首地址。 13.
14. 利用全地址译码将6264芯片接到8088系统总线上,地址范围为30000H~31FFFH,
画出逻辑图。
全地址译码可以保证存储器芯片上的每一个单元在整个内存空间中具有唯一的、独占的一个地址。参考教材相关内容,6264芯片有13根地址线,剩余的高位7根地址线通过译码组合确定该芯片的起始地址(30000H)。
由30000H地址得出对应的地址线状态为: 0011 000 0 0000 0000 0000
可以看出A13~A19地址线为0011 000,所以译码组合应逻辑为:
CS1= A13·A14·A15·A·A·A18·A19
1617
=(A13·A14·A15·A18·A19)·(A16·A17)
= A13+A14+A15+A18+A19+ A16·A17
具体逻辑如右图所示。
全地址译码连接图 15. 若用2164芯片构成容量为128KB的存储器,需
多少片2164? 至少需多少根地址线?其中多少根用于片内寻址?多少根用于片选译码?
2164A是容量为64K×1位的动态随机存储器芯片,构成128KB的存储器需要2164A芯片16片 [128K×8/(64K×1)=16 ]。