汇编语言与接口技术(第4版)清华大学出版社 第2章 80*86微处理器 课后题答案

汇编语言与接口技术(第4版)清华大学出版社 第2章 80*86微处理器 课后题答案

1. 8086/8088 CPU的地址总线有多少位?其寻址范围是多少?
20位,最大可寻址1MB空间

2. 8086/8088 CPU分为哪两个部分?各部分主要由什么组成?
8086/8088 CPU=总线接口部件BIU+执行部件EU
BIU=4个16位的段地址寄存器(CS、DS、SS、ES)+1个16位的指令指针寄存器IP
+1个20位的地址加法器+指令队列寄存器+内部寄存器+输入输出总线控制逻辑
EU=4个16位的通用数据寄存器(AX、BX、CD、DX)
+4个16位的专用寄存器(BP、SP、SI、DI)+1个16位的标志寄存器FR

	执行部件EU负责指令的执行 ,由下列4部分组成:
	①算术逻辑部件ALU(arithmetic logic unit)。 -标志寄存器
	② 暂存寄存器
	③ 通用寄存器组
	–	4个通用寄存器,即AX、BX、CX、DX
	–	4个专用寄存器,即
	•	基数指针寄存器BP(base pointer)
	•	堆栈指针寄存器SP(stack pointer)
	•	源变址寄存器SI(source index)
	•	目的变址寄存器DI(destination index);
	④EU控制单元
	
	总线接口部件BIU负责与存储器、I/O端口传送数据 ,由下列3部分组成:
			① 指令队列缓冲器
			② 16位的指令指针寄存器
	        (IP   Instruction Pointer)
	        4个段地址寄存器
	       (CS、DS、ES、SS)
			③ 20位的地址加法器 

3. 什么叫队列?8086/8088 CPU中指令队列有什么用?其长度分别为多少字节?
指令队列是指CPU子系统中用于存储予取指令的存储空间。
8086中指令队列为6个字节,8088中为4个字节。
指令队列的作用主要是为了提高CPU的效率,将待执行的指令预先取出一部份,存放在指令队列中,此项工作由总线接口部件完成,使“取指”工作和执行部件的“指令译码执行”工作可并行进行,提高了工作效率。

4. 8086/8088 CPU中有几个通用寄存器?有几个变址寄存器?有几个指针寄存器?
8个16位通用寄存器AX、BX、CX、DX、BP、SP、SI、DI
2个变址寄存器SI、DI
2个指针寄存器BP、SP
其中BX、BP、SI、DI亦可作地址寄存器

5. 8086/8088 CPU中有哪些标志位?它们的含义和作用是什么?
9个标志位:6个状态标志位,3个DF、IF和TF为控制标志位
状态位:
进位标位CF:当运算结果的最高位有进位或借位时,进位标志置1,CF=1;否则CF=0;
零标志ZF:若运算结果为0,则ZF=1;否则ZF=0;
符号标志SF:若运算结果最高位为1,则SF=1;否则SF=0;
奇偶标志PF:当运算结果最低字节中“1”的个数为偶数时,PF=1;否则PF=0;
溢出标志OF:若算术运算的结果有溢出,则OF=1;否则 OF=0;
辅助进位标志AF:运算时D3位(低半字节)有进位或借位时,AF=1;否则AF=0;
控制位:
方向标志DF:用于串操作指令中,控制地址的变化方向
设置DF=0,存储器地址自动增加;
设置DF=1,存储器地址自动减少。
中断允许标志IF:控制可屏蔽中断是否可以被处理器响应
设置IF=1,则允许中断;
设置IF=0,则禁止中断。
陷阱标志TF:用于控制处理器进入单步操作方式
设置TF=0,处理器正常工作;
设置TF=1,处理器单步执行指令。

6. 试求出下列运算后的各个状态标志,并说明进位标志和溢出标志的区别
1278H+3469H = 46E1H ZF=0; SF=0; CF=0; OF=0; AF=1; PF=1

54E3H-27A0H = 2D43H ZF=0; SF=0; CF=1; OF=0; AF=0; PF=0

3881H+3597H = 6E18H ZF=0; SF=0; CF=0; OF=0; AF=0; PF=1

01E3H-01E3H = 0000H
要用到上面5的那一堆字母的知识点

注意,每一位是16,每次借位的时候记得借的是一个16

A10 B11 C12 D13 E14 F15 CF=1:最高位有进/错位 AF=1:低4位产生进/错位
PF=1:低8位所含1的个数位偶

7. 8086所构成的系统分为哪两个存储体?它们如何与地址、数据总线连接?
8086系统中,存储器采用分体结构,1MB 的存储空间被分成两个 512KB 的存储体,一个存储体中包含偶数地址,一个存储体中包含奇数地址,两个存储体采用字节交叉编址方式
偶地址存储体固定与低8位数据总线(D7 ~ D0)相连,称为低字节存储体
奇地址存储体固定与高8位数据总线(D15 ~ D8)相连,称为高字节存储体

8. 什么是逻辑地址?什么是物理地址?他们之间有什么联系?各用再何处?
逻辑地址由两个 16 位的部分:段基址和偏移量组成, 一般在程序中出现的地址都表示为逻辑地址形式;
物理地址是一个 20 位的地址, 它是唯一能代表存储空间每个字节单元的地址,一般只出现在地址总线上。

由于 8086/8088CPU 中的寄存器只有 16 位长,所以程序不能直接存放 20 位的物理地址,而必须借助逻辑地址,即用两个 16 位的寄存器来表示物理地址。他们之间的关系是:物理地址=段基址 *16 +偏移量;另外,一个物理地址可对应多个逻辑地址。

9. 设现行数据段位于存储器0B0000H~0BFFFFH存储单元,DS段寄存器内容为多少?
因为数据段位于B0000H到BFFFFH的存储单元,所以DS段存储器的内容再左移4位以后就是B0000H,即DS段寄存器的内容是:0B000H。

在此再说一下,由于是2进制和16进制,“左移4位”
4个二进制数刚好表示一个16进制数,也就是左移4位就相当于十进制的乘16,十六进制的乘10.
也就是说所谓的“左移4位”,直接*10H扩大10倍就行

10. 若(CS)=5200H,物理转移地址为5B230H,则当CS的内容被设为7800H时,物理转移地址应为多少?
实际的物理地址=段基址*16+段内偏移地址
CS是段基址,段基址是每段的首地址
物理地址为5B230H=CS16+IP
已知CS=5200H,得IP=9230
CS=7800时,物理地址=7800H
16+9230=81230H

11. 什么是堆栈?简述堆栈的存储特点
为了暂存一批需要回避的数值数据或地址数据,而特别划分出来一段存储区。该存储区中,存储数据按“后进先出”原则进行。
堆栈段中存取数据的地址由堆栈段寄存器SS和堆栈指针SP来规定。SS中存放堆栈段的首地址,SP中存放栈顶的地址,此地址表示栈顶离段首址的偏移量,存取数据都在栈顶进行。

12. 8086CPU 工作在最小模式(单CPU)和最大模式(多CPU)时的主要特点是什么?有什么区别?
最小模式:在系统中只有一个微处理器,所有的控制信号都直接由8086/8088CPU产生,系统中的总线控制逻辑电路被减到最小。
最大模式:两个或多个微处理器(主处理器、协处理器)

13. 试简述80486CPU的实地址模式、保护模式和虚拟8086管理模式
80486的3种工作模式
实地址模式是为了与8086CPU兼容而设置的方式,它是一种基本的工作模式。微处理器在系统复位后,因CR0寄存器中的PE位置为0,自动进入实地址工作模式。在这种模式下,80486微处理器的寻址方式、段基址等完全与8086相同。

当CR0控制寄存器中的PE位置为1时,CPU就工作在保护模式。保护模式既提供了存储器的管理机制,又提供了保护机构并支持多任务操作。

虚拟8086模式也被称为V86模式。V86模式既允许执行8086/8088程序,又能有效地利用保护功能。在V86模式下,用户好像在实模式下执行8086的应用程序。但不同的是,V86模式为系统提供了大量的灵活性,可以实现多任务。

14. 80486地址总线宽度是多少?数据总线宽度又是多少?

地址总线:32位 数据总线:32位 一根总线传送一比特(bit)的数据,八根就是一个字节(byte)的数据。
总线分为三种:地址总线,数据总线,控制总线。
(1)地址总线的多少表示CPU可以一次对多少个内存单元进行寻址。
8080,8088,8086,80286,80386的地址总线宽度分别为:16根,20根,20根,24根,32根。
(2)数据总线的多少表示一次可以传送的数据,一般为8的倍数。
8080,8088,8086,80286,80386的数据总线宽度分别为:8根,8根,16根,16根,32根。
(3)控制总线表示CPU对系统中其他器件的控制能力。有多少根控制总线,就意味这CPU提供了对外部器件的多少种控制。
8080,8088,8086,80186,80188,80286,80386的控制总线宽度分别为:8根,16根,16根,16根,16根,32根。

15. 现有6B的数据分别为11H,22H,33H,44H,55H,66H,已知它们在存储器中的物理值为400A5H~400AAH,若当前(DS)=4002H,请说明它们的偏移地址值。如果从存储器中读出这些数据,至少需要访问几次存储器?各读出哪些数据?
这几个字节数据的偏移地址值为:0085H~008AH(偏移地址 = 物理地址 - 段基址*16 = 物理地址 - 40020H)
数据是以字节形式存放的。如果是8088CPU,无论如何都要读6次存储器,每次分别读出一个字节。如果是8086CPU,可分为以下三种情况:
若以字节方式读数据,则每读一个字节需要访问一次存储器,共需6个总线周期;
若以字的方式读数据,由于存放格式为非规则字,故每读一个非规则字需要两个总线周期,3个非规则字仍需6个总线周期,每个总线周期读出一个字节;
若对读取方式无具体规定,则可以先读一个奇地址字节11H,然后连续读两个规则存放的字3322H、5544H,最后读偶地址字节66H,这样共需访问4次存储器。

16. 8086 CPU读/写总线周期各包含多少个时钟周期?什么情况下需要插入Tw(等待周期)?应插入多少个Tw取决于什么因素?什么情况下会出现空闲状态T1?
8086读/写总线周期各包括最少四个时钟周期。
在系统中增加等待周期TW的一般情况是:当CPU提供了地址后,由于外设或存储器的读出或写入时间较慢,不能与CPU的速度匹配,就需要插入等待周期TW,等待CPU能从外设或存储器将数据正确地读出或写入为止。显然,插入的等待周期TW的个数取决于外设或存储器的取出或写入时间。
如果1个总线周期之后不立即执行下一个总线周期,那么总线就处于空闲状态,即执行空闲周期T1

  • 6
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值