1. 8086/8088系统中,存储器为什么要分段,一个段的最大和最小各为多少字节
8086/8088系统中,存储器分段的主要目的是便于存储器的管理,使得可以用16位寄存器来寻址20位的内存空间。一个段最大为64KB,最小为16B。
存储器一般用来保存程序的中间结果,为随后的指令快速提供操作数,从而避免把中间结果存入内存,再读取内存的操作。
由于存储器的个数和容量都有限,不可能把所有中间结果都存储在存储器中,所以,要对存储器进行适当的调度。根据指令的要求,管理安排适当的寄存器,避免操作数过多的传送操作。
8086/8088CPU可直接寻址1MB的存储器空间,直接寻址需要20位地址码,而所有内部寄存器都是16位的,只能直接寻址6KB,因此采用分段技术来解决。将1MB的存储空间分成若干逻辑段,每段最长64KB,最短16B。这些逻辑段在整个存储空间中可浮动。
(1)cpu存储器和指令队列扩展阅读:
8086/8088CPU内部设置了4个16位段寄存器,它们分别是代码段寄存器CS、数据段寄存器DS、堆栈段寄存器SS、附加段寄存器ES、由它们给出相应逻辑段的首地址,称为“段基址”。段基址与段内偏移地址组合形成20位物理地址,段内偏移地址可以存放在寄存器中,也可以存放在存储器中。
程序较小时,代码段、数据段、堆栈段可放在一个段内,即包含在64KB之内,而当程序或数据量较大时,超过了64KB,那么可以定义多个代码段或数据段、堆栈段、附加段。
2. CPU存储器的指令寄存器
32位CPU把指令指针扩展到32位,并记作EIP,EIP的低16位与先前CPU中的IP作用相同。
指令指针EIP、IP(Instruction Pointer)是存放下次将要执行的指令在代码段的偏移量。用来提供指令在存储器中的地址。在具有预取指令功能的系统中,下次要执行的指令通常已被预取到指令队列中,除非发生转移情况。所以,在理解它们的功能时,不考虑存在指令队列的情况。
在实方式下,由于每个段的最大范围为64K,所以,EIP中的高16位肯定都为0,此时,相当于只用其低16位的IP来反映程序中指令的执行次序。
3. 8086微处理器中的指令队列起什么作用其长度是多少字节
8086微处理器的指令队列一共有6个字节, 但是当指令队列如果出现2个空字节, BIU就会自动的执行一次取指令的周期,将下一条需要执行的指令从内存的单元中读入指令队列。
它们采用的是“先进先出”原则,按照顺序存放,并且按顺序依次取到EU中然后去执行。
当EU执行一条需要到的存储器或者是I/O端口读取的操作数的指令时,BIU将在执行完成现行的取指令的存储器周期之后的下一个存储的周期,对指令的所指定的存储的单元或I/O端口嗯进行访问,读取的操作数必须经BIU送EU进行处理才可以。
当EU执行了跳转、子程序调用或者是返回指令时,BIU就会使指令的队列复位,并从指令的给出的新地址才会开始取指令,新取的第1条指令就会直接经指令队列并送EU执行,随后取来的指令就将会填入指令队列的缓冲器。
4. 8080cpu指令队列作用是什么
你好
8086CPU的预取指令队列由6个字节组成,按照8086CPU的设计要求,指令执行部件(EU)在执行指令时,不是直接通过访问存储器取指令,而是从指令队列中取得指令代码,并分析执行它。从速度上看,该指令队列是在CPU内部,EU从指令队列中获得指令的速度会远远超过直接从内存中读取指令。
5. 8086cpu包含那两个单元每个单元有哪些主要组成部分
从功能上看,8086
CPU分为执行单元(EU)和总线接口单元(BIU)两部分。
BIU为EU完成全部的总线操作,根据EU的命令控制数据在CPU和存储器或I/O接口之间传送。BIU由下面的五种功能单元组成:
●段寄存器(均为16位)
CS:代码段寄存器,存放程序段地址;
DS:数据段寄存器,存放数据段地址;
ES:扩展段寄存器,存放辅助数据段地址;
SS:堆栈段寄存器,存放堆栈段地址。
●
指令指针寄存器(16位)IP寄存器用于存放程序段的偏移量。
●地址加法器(20位)地址加法器用于根据逻辑地址计算20位物理地址。
●6字节的指令队列
指令队列可存放多条指令,用于指令预取。
●I/O
控制电路
I/O控制电路实现I/O的控制逻辑,产生相应的控制信号。执行单元EU从BIU的指令队列得到指令以后,完成对指令的译码、执行并回写结果。当EU需要操作数时,便申请BIU访问存储器并向BIU提供段偏移地址。此外它还具有管理寄存器等功能。EU由以下单元组成:
通用寄存器(16
位)
AX:用作累加器;
BX:一般用作基址寄存器;
CX:常常作为计数器;
DX:多用作辅助累加器
AX、BX、CX和DX都是16位寄存器,可是它们都可以分别作为2个8位寄存器使用。
专用寄存器(16
位)
BP:基数指针寄存器
SP:堆栈指针寄存器
SI:源变址寄存器
DI:目的变址寄存器
标志寄存器Flag(16
位)
6. CPU执行转移指令时,指令队列寄存器如何变化
2.1 8086 CPU在内部结构上由哪几部分组成?其功能是什么?
8086的内部结构-成两部分:总线接口部件BIU,负责控制存储器读写。执行部件EU,EU从指令队列中取出指令并执行。8086是16位微处理器,有16根数据线、20根地址线,内部寄存器、运算部件以及内部操作都是按16位设计的。
2.2 8086的总线接口部件有那几部分组成?
8086的总线接口部件主要由下面几部分组成:4个段寄存器CS/DS/ES/SS, 一个16位的指令指针寄存器IP, 一个20位地址加法器, 6字节的指令队列,内部暂存器以及输入输出电路组成.
2.3 8086的执行部件有什么功能?由那几部分组成?
8086的执行部件主要由下面几部分组成:(1)四个16位通用寄存器AX、BX、CX、DX, 通用四个16位专用寄存器,包括二个指针寄存器SP、BP, 二个变址寄存器SI、DI, 算术逻辑单元ALU,标志寄存器。
2.4 8086CPU状态标志和控制标志又何不同?程序中是怎样利用这两类标志的? 8086的状态标志和控制标志分别有哪些?
标志分两类:状态标志(6位):反映刚刚完成的操作结果情况。控制标志(3位):在某些指令操作中起控制作用。
2.5 8086/8088和传统的计算机相比在执行指令方面有什么不同?这样的设计思想有什么优点? 8086CPU执行转移指令时,指令队列寄存器内容如何变化?
传统的计算机一般按照取指令、指令译码/执行指令的步骤工作。在8086/8088中,指令的提取与执行分别由总线接口部件BIU与执行部件EU完成,8086/8088可以在取指令同时又可以执行指令,这种并行工作方式有力的提高了CPU的工作效率。
2.6 将两数相加,即0100 1100加 0110 0101,CF、PF、AF、ZF、SF、OF各为何值?
0100 1100+0110 0101=10110001
CF=0,PF=1,AF=1,ZF=0,SF=1,OF=1
2.7 存储器的逻辑地址由哪几部分组成?存储器的物理地址是怎样形成的?一个具有20位地址线的CPU,其最大物理地址为多少?
存储器的逻辑地址由段地址与段内偏移地址组成。存储器的物理地址:将16位段地址左移4位后加上16位段内偏移地址,形成20位物理地址。一个具有20位地址线的CPU,其最大物理地址为 =1MB。
2.8 现有6个字节的数据分别为11H,22H,33H,44H,55H,66H,已知它们在存储器中的物理地址为400A5H~400AAH.若当前(DS)= 4002H,请说明它们的偏移地址值。如果要从存储器中读出这些数据,需要访问几次存储器,各读出哪些数据?
由于:物理地址=400A5H=段地址*16+偏移地址=40020H+偏移地址
偏移地址=400A5+40020=85H
从奇地址400A5H中读出:11H;从偶地址400A6H读出一个字:22H,33H;从偶地址400A8H读出一个字:44H,55H;从偶地址400AAH中读出:66H。共读4次。
2.9 已知当前数据段中存有如下图所示的数据,现要求将最后两个字节改成ODH,OAH,请说明需给出的段基值和偏移地址值,并说明其写入过程。
14800
……
150A1
150A2150A3150A4150A5
数据段首地址
数据段段地址=150AH,偏移地址=0004H。CPU的总线接口部件根据数据段寄存器的内容150AH,左移4位,在加上偏移地址0004H,形成20位物理地址150A4H,由总线接口送出,选中物理存储单元150A4H、150A5H,数据0DH通过数据总线送入150A4H,数据0AH通过数据总线送入150A4H。
2.10 在 8088/8086中,逻辑地址FFFF∶0001, 00A2∶37F和B800∶173F的物理地址分别是多少?
2.11 在 8088/8086中,从物理地址388H开始顺序存放下列三个双字节的数据,651AH, D761H和007BH,请问物理地址388H, 389H, 38AH, 38BH, 38CH和38DH 6个单元中分别是什么数据?
2.12 8086/8088内部有哪些通用寄存器?
2.13 8086/8088 内部有几个段寄存器,阐述各段寄存器的用途?
2.14 8086CPU的形成三大总线时,为什么要对部分地址线进行锁存?用什么信号控制锁存?
为了确保CPU对存储器和I/O端口的正常读/写操作,要求地址和数据同时出现在地址总线和数据总线上。而在8086CPU中AD0--AD15总线是地址/数据复用的,因此需在总线周期的前一部分传送出地址信息,并存于锁存器中,而用后一部分周期传送数据。8086CPU中是通过CPU送出的ALE高电平信号来控制锁存的。
2.15 段寄存器CS=1200H,指令指针寄存器IP=4000H,此时,指令的物理地址为多少?指向这一物理地址的CS值和IP值是唯一的吗?
此时,指令的物理地址为16000H;这一物理地址的CS值和IP值不是唯一的,例如:CS=1000H,IP=6000H。
可能顺序有点乱,自己慢慢看吧