第二章
解;
8086 CPU:
内存寻址:8086 CPU可以直接寻址1MB(2²⁰字节)的内存单元。
I/O端口:8086 CPU可以直接寻址64KB(2¹⁶)个I/O端口。
8088 CPU:
内存寻址:8088 CPU也可以直接寻址1MB(2²⁰ 字节)的内存单元。
I/O端口:与8086一样,8088 CPU可以直接寻址64KB(2¹⁶)个I/O端口。
外部数据总线:
8086:外部数据总线有16根,允许一次性传输16位数据。
8088:由于8088是8086的降频版本,它只有8根外部数据总线,一次只能传输8位数据。
需要注意的是,尽管8088的外部数据总线只有8根,但它仍然可以访问1MB的内存,这是通过多次访问来实现的。
2.8086CPU内部由哪两部分组成?它们的大致是如何工作的?
8086CPU由指令执行部件EU和总线接口部件BIU两部分组成
①BIU先执行读存储器操作,从给定地址单元中取出指令,送到先进先出的指令队列中等待执行。存储器的物理地址=CS×16+IP,在地址加法器∑中形成
②EU从指令队列中取走指令,经EU控制器译码分析后,向各部件发控制命令,以完成执行指令的操作。BIU与EU是并行工作方式
③当指令队列已满,EU在执行指令,未向总线接口单元BIU申请读/写内存或I/O操作时,BIU处于空闲状态
④指令执行过程中,若需对存储器或I/O端口存取数据,EU就要求BIU去完成相应的总线周期
⑤EU执行完当前指令,如果指令队列空,EU处于空闲状态
3。CPU、EU和BIU的英文全称和中文含义各是什么?
CPU:
英文全称:Central Processing Unit
中文含义:中央处理器,是计算机的核心组件,负责执行指令、进行数据处理和控制各个硬件组件的运行。
EU:
英文全称:Execution Unit
中文含义:执行单元,是CPU的一个功能模块,负责执行指令中的运算和逻辑操作。
BIU:
英文全称:Bus Interface Unit
中文含义:总线接口单元,是CPU的一个功能模块,负责处理与总线相关的操作,包括指令和数据的读取、写入等。
EU和BIU是8086和8088等x86架构CPU的两个重要功能模块,它们协同工作以执行指令、访问内存和进行数据处理。
4。8086CPU内部有哪些寄存器?各有什么用途?
见书本24页和25页,2.1.2节8086CPU内部寄存器
5. 两个带符号数 1011 0100B 和 1100 0111B 相加,运算后各标志位的值等于多少?哪些标志位是有意义的?如果把这两个数当成无符号数,相加后哪些标志位是有意义的?
(1)两个带符号数:不考虑CF标志
1011 0100
+ 1100 0111
——————
1 0111 1011
运算后各标志位状态如下:
CF=1,有进位,对于带符号数,无意义。
PF=1,结果有偶数个 1
AF=0,无半进位,非 BCD 码运算,无意义。
ZF=0,结果非 0
SF =0,结果为正数
OF=1,溢出(两个负数相加,结果变成了正数)
(2)两个无符号数:不考虑 SF 和 OF 标志
1011 0100
+ 1100 0111
——————
1 0111 1011
运算后各标志位状态如下:
CF=1,有进位
PF=1,结果有偶数个 1
ZF=0,结果非 0
AF=0,无半进位,非 BCD 码运算,无意义。
SF、 OF 无意义。
6。说明下列8086引脚信号的功能:AD15~AD0、A19/S6~A16/S3、RD、WR 、M/IO 、 CLK、 RESET、INTR、NMI、ALE、DT/R 、DEN .
见书本27至30页,2.1.3节8086/8088CPU的引脚功能
7。已知段地址:偏移地址分别为如下数值,它们的物理地址各是什么?(参考图2.4。)
要计算给定的段地址和偏移地址的物理地址,需要将段地址左移4位(相当于乘以16),然后将偏移地址加到结果上。下面是每个情况的计算:
1)对于段地址:1200H 和偏移地址:3500H,
物理地址 = (1200H << 4) + 3500H
物理地址 = (12000H) + 3500H
物理地址 = 15500H
2) 对于段地址:FF00H 和偏移地址:0458H,
物理地址 = (FF00H << 4) + 0458H
物理地址 = (FF000H) + 0458H
物理地址 = FF458H
3)对于段地址:3A60H 和偏移地址:0100H,
物理地址 = (3A60H << 4) + 0100H
物理地址 = (3A600H) + 0100H
物理地址 = 3A700H
因此,给定的段地址和偏移地址的物理地址分别是:
1)15500H
2) FF458H
3) 3A700H
8。段基地址装入如下数值,则每段的起始地址和结束地址各是什么?(参考例2.4。)
(1) 1200H (2) 3F05H (3) 0FFEH
已知段基地址装入如下数值时,每段的起始地址和结束地址如下:
1)1200H:段的起始地址为 1200H x 16 = 12000H,结束地址为 1200H x 16 + FFFFH = 21FFFH。
2) 3F05H:段的起始地址为 3F05H x 16 = 3F050H,结束地址为 3F05H x 16 + FFFFH = 4F04FH。
3) OFFEH:段的起始地址为 OFFEH x 16 = 0FFE0H,结束地址为 OFFEH x 16 + FFFFH = 1FFDFH。
9.已知CS:IP=3456H:0210H,CPU要执行的下条指令的物理地址是多少?
段起始地址:3456H×16=34560H
下条地址:34560H+0210H=34770H
解;
堆栈是一个按照后进先出的原则存取数据的部件,它是由栈区和栈指针组成的。
堆栈的作用是:当主程序调用子程序、子程序调用子程序或中断时转人中断服务程序时,能把断点地址及有关的寄存器、标志位及时正确地保存下来,并能保证逐次正确地返回。
设置堆栈:
堆栈的操作通常由计算机的指令集提供支持。8086/8088 CPU 中,堆栈通过栈指针(Stack Pointer,SP)寄存器来管理。
1)初始化堆栈 :在程序开始运行时,需要先初始化堆栈。可以通过将堆栈底部的地址加载到 SP 寄存器来实现,通常是将栈的起始地址(即堆栈段的基地址)加载到 SP 中。
2) 入栈操作 :将数据压入堆栈。可以使用指令 `PUSH` 或者先减小 SP 再将数据写入 SP 指向的内存地址来实现。
3)出栈操作 :将数据从堆栈中弹出。可以使用指令 `POP` 来实现,它会先将 SP 指向的内存中的数据取出,然后将 SP 加上相应的偏移量。
4)堆栈段的设置 :在 8086/8088 中,堆栈是由一个单独的段来管理的,这个段叫做堆栈段(Stack Segment)。可以使用 `SS` 寄存器来指定堆栈段的地址。
在汇编语言中,设置堆栈的一般流程如下:
MOV AX, StackSegment ; 将堆栈段的基地址加载到 AX 寄存器
MOV SS, AX ; 设置堆栈段
MOV SP, StackAddress ; 将堆栈起始地址加载到 SP 寄存器
在实际编程中,需要根据具体的编程环境和需求来合理使用堆栈。
11。设SS:SP=2000:0300H,则堆栈在内存中的物理地址范围是什么?执行两条 PUSH指令后,SS:SP=?再执行一条POP指令后,SS:SP=?(参考图2.6。)
堆栈在内存中的物理地址范围为2000:0000H~2000:(0300H-1)=20000H~202FFH
执行两条 PUSH 指令后,每次 PUSH 指令会先减小 SP 的值,然后将数据写入 SP 指向的内存地址。
假设 PUSH 的数据为 1234H 和 5678H:
1). 第一条 PUSH 操作:
- 将数据 1234H 压入堆栈,SP 减小 2,所以 SS:SP = 2000:02FEH。
2). 第二条 PUSH 操作:
- 将数据 5678H 压入堆栈,SP 再次减小 2,所以 SS:SP = 2000:02FCH。
执行一条 POP 指令后,POP 操作会先将 SP 指向的内存中的数据取出,然后将 SP 加上相应的偏移量。
假设 POP 的数据为 5678H:
执行 POP 操作:
- 将堆栈顶部的数据 5678H 弹出,SP 增加 2,所以 SS:SP = 2000:02FEH。
即:
- 执行两条 PUSH 指令后,SS:SP = 2000:02FCH。
- 执行一条 POP 指令后,SS:SP = 2000:02FEH。
12. 如果从存储单元2000H开始存放的字节数据为:3AH,28H,56H,4FH,试画出示意图说明。从2000H和2001H开始取出一个字的数据各要进行几次操作?取出的数据分别等于多少?(参考图2.8。)
2000H=3AH
2001H=28H
2002H=56H
2003H=4FH
(1)从2000H取出一个字的数据需要一次操作,数据为283AH
(2)从2001H取出一个字的数据需要两次操作,数据为5628H
需要注意的是,8086CPU对存储器进行存取操作时,都是从偶地址体开始的,如果存放的字数据从偶地址单元开始,则存取一个字只需要进行一次操作,如果从奇地址单元开始存放,则需要进行两次操作。
13. 8086 工作于最小模式时,硬件电路主要由哪几部分组成?为什么要用地址锁存器、数据缓冲器和时钟发生器。
解:
8086工作于最小模式时,硬件电路主要由以下部件组成:
- 1片8086 CPU,它是系统的核心,执行指令和控制数据传输。
- 1片8284A时钟产生器,它产生系统时钟信号,并同步READY和RESET信号。
- 3片74LS373锁存器,它们用作地址锁存器,保持CPU在每个总线周期的前半部分输出的地址信号,因为它们与数据和状态信号复用在CPU的AD₁₅~AD₀引脚上。
- 2片74LS245缓冲器,它们用作双向数据总线缓冲器,增加数据总线的负载能力,并隔离CPU和外部设备。
使用地址锁存器、数据缓冲器和时钟产生器的原因如下:
- 地址锁存器用于保持CPU在每个总线周期的前半部分输出的地址信号,因为它们与数据和状态信号复用在同一组引脚上。如果不锁存,它们会在CPU在总线周期的后半部分输出其他信号时丢失。
- 数据缓冲器用于提高数据总线的驱动能力,因为CPU只能驱动总线上的10个负载。如果总线上有超过10个负载,例如存储芯片和I/O接口芯片,数据总线就需要通过总线驱动器进行缓冲,以确保可靠的数据传输。
- 时钟产生器用于产生决定CPU运行速度和总线周期时序的系统时钟信号。它还同步影响CPU运行的READY和RESET信号,使它们能够在适当的时间被CPU采样。
14。8086/8088CPU各用几片地址锁存器、数据缓冲器构成最小模式系统?为什么?
8086中使用3片74LS373地址锁存器,将地址/数据线AD₁₅~AD₀、地址状态线A₁₉/S₆~A₁₆/S₃和BHE/S₇,信号进行分离,在这些总线上先传送地址信号,然后将其锁存起来,再传送数据或状态信号。
8086系统中传送16位数据时要用2片双向数据缓冲器进行驱动,同时还可用来控制数据传送的方向。
对于8088CPU,只有AD₇~AD₀和A₁₉/S₆~A₁₆/S₃是多路复用的,所以只要用2片地址锁存器,A₁₅~A₈直接用单向的74LS244缓冲器即可。
8088中仅传送8位数据,只要用1片数据缓冲器,74LS373锁存器同时也具有缓冲功能。
15.时钟产生器8284A与8088 CPU相连时,输入的晶振频率为14.31818MHz,从输出 端可以产生哪些时钟信号?它们的频率分别是多少?8284A与8086-2相连时,晶振频率为 8MHz,则输出的OSC和CLK86-2信号的频率分别是多少?
解:
- 时钟产生器8284A与8088 CPU相连时,输入的晶振频率为14.31818MHz,从输出端可以产生以下时钟信号:
CLK88,频率是 4.77MHz ,用于驱动8088 CPU的内部时钟。
PCLK,频率是 2.385MHz ,用于驱动外部设备的时钟。
OSC,频率是 14.31818MHz ,用于输出晶振信号。
- 时钟产生器8284A与8086-2相连时,晶振频率为8MHz,则输出的OSC和CLK86-2信号的频率分别是:
OSC,频率是 8MHz ,用于输出晶振信号。
CLK86-2,频率是 2.66666MHz (算式是8MHz×??(这里我不会乘,抱歉-_-)),用于驱动8086-2 CPU的内部时钟。
16。8086最大模式配置电路中,8288总线控制器的主要功能是什么?MEMR、 MEMW、IOR和IOW 信号相当于最小模式中哪些信号的组合?
在8086最大模式配置电路中,8288总线控制器的主要功能是产生控制信号,这样就不用CPU来单独完成这个功能。它能产生系统总线或仅有I/O装置的总线的控制信号。
MEMR
正常的存储器读信号。它相当于在最小模式下,RD=0和M/IO =1这两个信号的组合,该信号送到PC总线和PC机中后,重命名为MEMR,即为存储器读信号。
MEMW
正常的存储器写信号。它相当于在最小模式下,WR=0和M/IO=1这两个信号的组合,该信号送到PC总线和PC机中后,重命名为MEMW,即为存储器写信号。
IOR
正常的I/O读信号,它相当于在最小模式下,RD=0和M/IO=0的组合,在PC总线和PC机中,重命名为IOR,即I/O读信号。
IOW
正常的I/O写信号,它相当于在最小模式下,WR=0和M/IO=0的组合,在PC总线和PC机中,重命名为IOW,即I/O写信号。
17. 什么是总线周期?一个基本的总线周期需要几个时钟周期?MIPS的含义是什么?若8086-2的时钟频率为8MHz,它每秒可执行多少条指令?
(1)总线周期:CPU完成一次访问存储器或I/O端口的时间称为总线周期。
(2)一个基本的总线周期是由4个(或4个以上)时钟周期T组成的。
(3)MIPS表示每秒处理的百万条指令数。
(4)若8086-2的时钟频率为8MHz,其一个T时钟周期为:1/8000000=125ns,基本总线周期为125ns×4= 500ns,每秒最多可执行1/500×10⁻⁹=200万条指令。
18。8086工作于最小模式时,执行存储器读总线周期,T1~T4周期中主要完成哪些工 作?(参考图2.17。)
见书本43和44页, 2.2.3总线操作时序
19。8086工作于最大模式时,其读/写总线周期与工作于最小模式下相比,有哪些不同之处?
见书本45页, 2.2.3总线操作时序
20。80386CPU内部主要由哪几部分组成?各部分功能是什么?(参考图2.19及相关 说明。)
见书本46,47页, 2.3.1 32位微处理器结构简介
21。80386可以有哪几种工作模式?实模式和保护模式有哪些主要特点?
见书本50和51页, 2.3.2 32位微处理器的工作模式
关注微信公众号,回复“微机原理”获取答案的word文档下载