《微机原理与接口技术》答案

上传人:xzh****18 文档编号:35521497 上传时间:2018-03-16 格式:DOC 页数:28 大小:128KB
返回 下载 相关 举报
《微机原理与接口技术》答案_第1页
第1页 / 共28页
《微机原理与接口技术》答案_第2页
第2页 / 共28页
《微机原理与接口技术》答案_第3页
第3页 / 共28页
《微机原理与接口技术》答案_第4页
第4页 / 共28页
《微机原理与接口技术》答案_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《《微机原理与接口技术》答案》由会员分享,可在线阅读,更多相关《《微机原理与接口技术》答案(28页珍藏版)》请在金锄头文库上搜索。

1、1微机原理与接口技术答案第一章、基础知识第一章、基础知识问:译码器是如何译码的?寻址空间是如何确定的?译码器与寻址空间是怎么联系的?答:译码器实际上是由许多与门、或门、非门和它们的组合构成的。它有若干个输入端和若干个输出端(也可能只有一个输出端) 。对某一个输出端来说,它的电平高低必然与输入的某一种状态相对应。例如,具有 4 个输入端的与非门就是一个简单的译码器,只有四个输入端为 1111 时,它的输出端才为 0。如果将地址总线的 A9、A8、A7、A6 与它的四个输入连接起来,并把它的输出连到存储器芯片或某个需要寻址的外设接口的片选端(假定低电平有效) ,那么,只有当 A9、A8、A7、A6

2、 为 1111 时,存储器芯片或外设才会被选中。译码器的寻址空间取决于地址总线的哪几根线接到译码器的输入端,例如上例,地址总线的 A9、A8、A7、A6 与译码器的输入连接,那么其寻址空间应该是 11 1100 000011 1111 1111,即 3C0H3F0H。注意,没有参与译码的低位地址线必然要参与存储器芯片或外设接口的内部译码。也就是说,内部译码地址范围是 0 - 2n - 1,例如上例为 00 0000 - 11 0000。可以说,译码器的译码输出决定了寻址空间的起始地址,内部译码决定了寻址空间的大小。第二章、第二章、80X8680X86 原理原理1. 问:为什么在流水 CPU 中

3、,将一条指令从取指到执行结束的任务分割为一系列子任务,并使各子任务在流水线的各个过程段并发地执行,从而使流水 CPU 具有更强大的数据吞吐能力?答:这里可以使用时空图法证明结论的正确性。假设指令周期包含四个子过程:取指令(IF)、指令译码(ID)、取操作数(EX)、进行2运算(WB),每个子过程称为过程段(Si),这样,一个流水线由一系列串连的过程段组成。在统一时钟信号控制下,数据从一个过程段流向相邻的过程段。 图 2、1图 2、1(B)表示非流水 CPU 的时空图。由于上一条指令的四个子过程全部执行完毕后才能开始下一条指令,因此每隔 4 个单位时间才有一个输出结果,即一条指令执行结束。图B1

4、8.4(C)表示非流水 CPU 的时空图。由于上一条指令与下一条指令的四个过程在时间上可以重叠执行,因此,当流水线满载时,每一个单位时间就可以输出一个结果,即执行一条指令。 比较后发现:流水 CPU 在八个单位时间中执行了 5 条指令,而非流水 CPU 仅执行了 2 条指令,因此流水 CPU 具有更强大的数据吞吐能力。 2. 问:片选信号(CS)到底是起使数据有效或无效的作用还是起选择芯片的作用啊?若是前者,干吗叫片选?答:片选信号就是选择芯片的信号。前者不叫片选信号,应该叫允许信号。3. 问:书本上讲的是若是计算结果中 1 的个数为偶数时,则 PF=1;但我又在另外的辅导书上看到的说如果计算

5、结果的低 8 位中 1 的个数为偶数,PF=1.请问老师是否是低八位?答:对,PF 只与结果的低 8 位有关。 34. 问:80386 CPU 包含哪些寄存器?各有什么主要用途? 80386 共有 7 类 34 个寄存器。它们分别是通用寄存器、指令指针和标志寄存器、段寄存器、系统地址寄存器、控制寄存器、调试和测试寄存器。(1)通用寄存器(8 个)EAX,EBX,ECX,EDX,ESI,EDI,EBP 和 ESP。每个 32 位寄存器的低 16 位可单独使用,同时 AX、BX、CX、DX 寄存器的高、低 8 位也可分别当作 8 位寄存器使用。它们与80888086 中相应的 16 位通用寄存器作

6、用相同。(2)指令指针和标志寄存器。指令指针 EIP 是一个 32 位寄存器,存放下一条要执行的指令的偏移地址。标志寄存器 EFLAGS 也是一个 32 位寄存器,存放指令的执行状态和一些控制位。(3)段寄存器(6 个)CS,DS,SS,ES,FS 和 GS。在实方式下,它们存放内存段的段地址。在保护方式下,它们被称为段选择符。其中存放的是某一个段的选择符。当选择符装入段寄存器时,80386中的硬件章自动用段寄存器中的值作为索引从段描述符表中取出一个 8 个字节的描述符,装入到与该段寄存器相应的 64 位描述符寄存器中。(4)控制寄存器(4 个)CR0、CRl、CR2 和 CR3。它们的作用是

7、保存全局性的机器状态。(5)系统地址寄存器(4 个)GDTR、IDTR、LDTR 和 TR。它们用来存储操作系统需要的保护信息和地址转换表信息、定义目前正在执行任务的环境、地址空间和中断向量空间。(6)调试寄存器(8 个)DR0DR7。它们为调试提供硬件支持。(7)测试寄存器(8 个)TR0TR7,其中 TR0TR5 由 Intel 公司保留,用户只能访问 TR6、TR7。它们用于控制对 TLB 中的 RAM 和 CAM 相连存储器的测试。TR6 是测试控制寄存器,TR7 是测试状态寄存器,保存测试结果的状态。 45. 问:什么是实地址模式?什么是保护模式?它们的特点是什么?答:实地址模式是与

8、 80868088 兼容的存储管理模式。当 80386 加电或复位后,就进入实地址工作模式。物理地址形成与 80888086 一样,是将段寄存器内容左移 4 位与有效偏移地址相加而得到,寻址空间为 1MB。保护地址模式又称为虚拟地址存储管理方式。在保护模式下,80386 提供了存储管理和硬件辅助的保护机构,还增加了支持多任务操作系统的特别优化的指令。保护模式采用多级地址映射的方法,把逻辑地址映射到物理存储空间中。这个逻辑地址空间也称为虚拟地址空间,80386 的逻辑地址空间提供 246 的寻址能力。物理存储空间由内存和外存构成,它们在 80386 保护地址模式和操作系统的支持下为用户提供了均匀

9、一致的物理存储能力。在保护模式下,用段寄存器的内容作为选择符(段描述符表的索引),选择符的高 13 位为偏移量,CPU 的 GDTR 中的内容作为基地址,从段描述符表中取出相应的段描述符(包括 32位段基地址、段界限和访问权等)。该描述符被存人描述符寄存器中。描述符中的段基地址(32 位)与指令给出的 32 位偏移地址相加得到线性地址,再通过分页机构进行变换,最后得到物理地址。 第三章、汇编语言第三章、汇编语言1. 问:在逻辑运算一节,书上说“NOT”为求反操作,这里的求反操作是何意?在循环移位指令里,书上举例:SAL 左移一位,相当于乘以二;SAR 右移一位,相当于除以二;请问除 SAL 和

10、 SAR 外的其它移位指令也有此功能吗?答:求反操作就是将目的操作数的内容按位变反。例如,AL=01000110B,则执行 NOT AL指令后,AL=10111001B。除 SAL、SAR 指令外,SHL、SHR 指令也有此功能。循环移位指令没有此功能。2. 问:TEST 指令到底是怎么回事?NZ 和 Z 到底是怎么得到的?若是要检查好几位的话,要怎么检查呢?答:AND 指令属于逻辑操作指令,它是对两个操作数(源操作数和目的操作数)进行“与”操作,操作是按位进行的,即源操作数 bit7 和目的操作数 bit7 相与,源操作数 bit6 和目的操作数 bit6 相与,and so on。与操作的

11、结果最后被送到目的操作数中,也就是说,原来的5目的操作数被破坏了。TEST 指令与 AND 指令类似,也是对两个操作数进行“与”操作。但 TEST 不把结果送到目的操作数,只是设置一下标志位(请复习一下:逻辑操作指令会影响哪些标志位?)。这就给我们带来了一个好处:你如果想测试操作数某几位的状态,但又不想破坏操作数的内容,就可以用 TEST 指令。(AND/TEST 这一对指令的关系与 SUB/CMP 这一对指令的关系一样:操作相同,不同之处是结果送不送到目的操作数中。)一般来说,逻辑指令和算术运算指令都会根据运算结果设置标志位,所以你提出的“NZ 和Z 到底是怎么得到的?”这个问题应该这样回答

12、:NZ 和 Z 是根据指令操作的结果所得到的,或者说是由 CPU 根据指令的运算结果来设置各个标志位得到的。Z 和 NZ 都是指 ZF 标志的状态,ZF=1 时称为 Z(即 Zero 的缩写),ZF=0 时称为 NZ(即Not Zero 的缩写)。其实 Z 和 NZ 这两种状态都只用于条件转移指令中,如“JZ XXX”(意思是如果 ZF 标志等于 1 就转移到标号为 XXX 的指令处执行)或“JNZ XXX”(意思是如果ZF 标志等于 0 就转移到标号为 XXX 的指令处执行)。注意,如果运算的结果为 0,ZF 会被设置成 1,如果运算的结果不为 0,ZF 会被设置成0。所以 ZF 代表了运算

13、结果是否为 0:若 ZF=1,运算结果肯定为 0;反之,运算结果肯定不为 0。若要检查一个操作数中某几位的状态,可设置另一个操作数中相应的位为 1,其他位为0,然后进行 TEST 操作。如要检查 AL 的 bit7、bit6、bit5 是否全是 0,另一操作数应该是11100000B,测试指令为 TEST AL,11100000B。3. 问:有一段代码:AND AX,AXJZ STOP这个 JZ 是对哪一个标志位说的呢?答:JZ 当然是对 ZF 标志说的,因为 AND AX,AX 会影响 ZF 标志位的。4. 问:MOV DI,1000H6MOV CX,64HMOV AL,2AHAGAIN:M

14、OV DI,ALINC DIDEC CXJNZ AGAINHLT程序中 INC DEC 如何影响标志位,MOV DI,AL 中的 DI 可否用别的寄存器替代?答:INC/DEC 将影响 ZF,OF,PF,AF,SF,但不影响 CF。因为这里是 MOV 指令,DI 寄存器当然就可以用其他 3 个能够作为指针的寄存器代替,例如SI,BX,BP(BP 要指定段超越前缀)。5. 问:以下这两条指令哪里错了?MOV DS,BPMOV DATASI,ES:AX答:第一条没错。第二条的寄存器前不应该有段超越前缀,因为寄存器不是内存单元,它没有地址。6. 问:过程调用返回语句 RET 后加数字表示什么?比如

15、RET 4。答:表示把栈顶内容弹出到指令指针后再扔掉栈顶的 n 个字节(n 为偶数)。栈顶的这 n个字节是调用子程序前压入堆栈的子程序入口参数。仅当用堆栈传递参数时才会使用这种指令。这种参数处理方法也可用其它方法替代,如在主程序的调用指令后用几个 POP 指令把调用之前压入的参数扔掉。77. 问:请问汇编中有无浮点数?有书上说,用 DQ,DT 等定义的实数如:-5.12E-1 表示-0.512,应该没错吧,但这样的数据在程序运算中是怎样具体进行的?我曾经试过,有提示警告说字长有问题。而且得不到有意义的结果。如:DATA DQ -5.12E-1MOV AX,120MUL DATA请问 AX 中的

16、结果?恳请老师能详细解答!答:汇编语言程序中可以使用浮点数,有两个方法:1)自己编写浮点运算子程序;2)使用 CPU 的浮点指令(486 以上级别的 CPU 支持浮点操作)。DQ 定义的数据类型是每个元素 8 个字节,你用 16 位的乘法操作当然就不对了,因为 AX是 16 位的寄存器,与 DQ 定义的数据类型不一致。如果一定要这样做,应把最后一句改为 MUL WORD PTR DATA,这样语法就正确了,但这样得到的结果并不是所期望的。8. 问:Object filename 2.OBJ:Source listing NUL.LST: 2Cross-reference NUL.CRF:2.asm(25): error A2071: Forward needs override or FAR49922 + 416126 Bytes symbol space free0 Warning Errors1 Severe Errors请指教!8答:看见第 4 行的提示了吗?意思是:在 2.ASM 程序文件中的第 25 行有一个错误。因为没看见你的

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > IT计算机/网络 > 计算机原理

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号