(全网最全)微型计算机原理与接口技术第六版课后习题答案-周荷琴,冯焕清-第2章微处理器的结构和工作模式-中国科学技术大学出版社

第二章

1.8086/8088CPU可直接寻址多少个内存(字节)单元?多少个I/O端口?它们的外部数据总线各有多少根?

解;

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

10。什么叫堆栈?它有什么用处?如何设置堆栈?

解;

堆栈是一个按照后进先出的原则存取数据的部件,它是由栈区和栈指针组成的。

堆栈的作用是:当主程序调用子程序、子程序调用子程序或中断时转人中断服务程序时,能把断点地址及有关的寄存器、标志位及时正确地保存下来,并能保证逐次正确地返回。

设置堆栈:

堆栈的操作通常由计算机的指令集提供支持。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文档下载

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值