第三四五章习题答案.docx
《第三四五章习题答案.docx》由会员分享,可在线阅读,更多相关《第三四五章习题答案.docx(18页珍藏版)》请在冰豆网上搜索。
第三四五章习题答案
第三章习题答案
1.判断题
FFFTTTFTFFFFFFT
2.单项选择题
ACCBAC(C/C)DCD(C/B)DBB(D/B)
3.多项选择题
BCDABCDBEACACD
ACCDABCFBCEAD
CDABCDABABABCD
4.填空题
(1)L1Cache、SRAM、DRAM
(2)21234H
(3)代码段、CS、IP
(4)执行部件EU、地址部件AU、总线部件BU、指令部件IU、3、14
(5)30(A31~A2)+4(
3~
0)、4096、0、0FFFFFFFF
(6)偶、奇
(7)13FF、5FFF
(8)32、22
(9)段选择、段描述符表、8
(10)1、0、1、0
(11)0、0、1
(12)辅存、慢
(13)直接映射、全相联映射、组相联映射、组相联映射
(14)17、CKE
(15)T1、T2、T2、T2、T2
5.简答题
(1)存储器有哪些种类?
举例说明常用的主存储器、高速缓冲存储器、磁盘存储器和
光存储器以及它们的种类、规格。
按存储介质分,存储器可分为磁表面存储器(硬磁盘、软磁盘、磁带等)、光盘存储器和半导体存储器。
半导体存储器以前主要用于内存,现在也用于外存。
按制造工艺分,半导体存储器又可分为MOS型和双极型两大类。
因为双极型存储器的功耗大且集成度低,半导体存储器一般都是MOS型存储器。
从应用角度,MOS型半导体存储器可分为只读存储器ROM和随机存取存储器RAM两大类。
ROM细分有:
掩模ROM、PROM、EPROM、E2PROM、FLASH等,RAM大体分SRAM、DRAM和NVRAM三类。
(举例略)
(2)半导体RAM可分为哪几类?
他们各有什么功能?
用在什么场合?
RAM分SRAM、DRAM和NVRAM三类。
SRAM有:
经典SRAM,用于高速缓存Cache;SBSRAM,用于L2Cache;Multi-SRAM,用于数据共享场合;FIFOSRAM,用于缓冲器;PSRAM,是片内集成了动态刷新逻辑的DRAM。
DRAM有:
FPMDRAM,早期用于计算机的主存储器;EDODRAM,早期用于计算机的主存储器;SDRAM,用于计算机的主存储器;RDRAM,用于计算机的主存储器。
NVRAM有SRAM—电池式、SRAM—ROM式、FRAM、MRAM等,用于断电后仍须保持信息不丢失的场合。
(3)Cache-主存与主存-辅存这两个存储层次的结构和功能各有什么异同?
Cache由静态RAM(即SRAM)构成,速度比主存快得多,可与CPU速度相匹配,但容量很小,Cache-主存层次解决存储器的存取速度问题。
辅存如硬盘等容量巨大、价格低廉,但速度较主存慢,主存-辅存层次解决存储器的容量问题。
Cache-主存之间的映射不同于主存-辅存之间的映射,CPU可以访问Cache和主存,但CPU只可访问主存而不可直接访问辅存。
(4)简要说明什么是数据存取的局限性?
多数程序在运行时内存中只有很少部分的数据和指令被频繁地使用。
各种程序大量地采用循环结构、选择结构,运行时经常在相同的数据区和同一个指令段内转来转去,这就是程序访问的局部性原理,决定了数据存取的局限性。
(5)在计算机发展过程中,DRAM存储芯片有哪些种类?
奔腾机中普遍采用哪一种?
你上机的机器中都用了哪种存储芯片?
早期使用的传统DRAM存储器都是小容量芯片,传统DRAM的改进型是FPMDRAM和EDODRAM。
现在广泛用于计算机中的是高速大容量存储芯片,主要有SDRAM和RDRAM,奔腾机中普遍采用DDRSDRAM,这是双倍数据速率的SDRAM。
(6)什么叫逻辑地址?
它由哪几部分构成?
8086系统中如何由逻辑地址生成物理地址?
80386又如何生成呢?
程序中表示一个存储单元的地址称为逻辑地址,逻辑地址由段基址和偏移地址组成,8086系统中由段基址×16+偏移地址生成20位的物理地址。
80386系统由段寄存器中16位段选择子在全局/局部描述符表中找到64位的段描述子,再由段描述子中32位的段基址加上32位的偏移量得到32位的线性地址,线性地址经页目录和页表两次映射得到32位的物理地×址。
(7)大容量存储芯片多采用什么结构?
为什么?
大容量存储芯片多采用位结构。
比起字结构和混合结构,位结构封装引线少,单片合格率高,成本因而降低,故多被采用。
(8)80386以后的微机如何根据16位的段寄存器内容找到32位的段基址?
16位段寄存器内容(×8)作为偏移量在GDTR/LDTR(全局描述符表/局部描述符表)中找到64位的段描述子,段描述子中包含了32位的段基址。
(9)为什么早期奔腾机主板上大多数SIMM内存条必须成对出现?
因为72线的SIMM内存条只有32根数据线,而奔腾机的数据线为64位,所以必须用2条SIMM。
一般奔腾机主板上有不少于4个的SIMM内存插槽。
(10)微型计算机中常用的内存条有哪几种类型?
它们的引脚各是多少?
数据线和地址
线各有多少条?
现在微机中常用的是DDR内存条,采用184线的DIMM封装(插边只有一个缺口),而早先有采用168线的DIMM内存条(插边有两个缺口)。
也有采用184线的RIMM内存条(插边有两个缺口),这是配用RDRAM存储芯片的。
这些内存条的数据线都是64根,对应的地址线为32根。
(11)SBSRAM有什么功用?
用在什么场合?
SBSRAM主要用于支持突发访问的微处理器系统,用作高性能微处理器的L2Cache,在统一时钟控制下,配合高性能处理器同步进行高速访问操作。
(12)常见的总线周期有哪些?
突发总线周期有什么特点?
为什么突发总线周期是现代
微机的主要总线周期?
从操作内容来看,常见的总线周期有读(存储器/IO端口)和写(存储器/IO)总线,从时序上看,有单次传输总线周期和突发传输总线周期。
突发总线周期能对存储器一次读/写多个数据项,在一个突发总线周期中处理器能够在连续时钟状态内连续地读或写4个数据项,每个数据项为64位(8个字节),一次突发周期可读或写4×64=256位的数据(32个字节),对应了高速缓冲存储器Cache的一个缓冲行。
现代微机往往要求一次对存储器读/写多个数据项,而大量的数据是顺序、连续地存放在存储器中的,因此突发总线周期是现代微机的主要总线周期。
(13)存储器芯片常用什么校验方法?
为什么普通微机一般不用校验?
什么场合存储器
须用校验?
常用奇偶校验和ECC(ErrorCheckingandCorrecting:
错误校验与纠正)技术。
由于内存芯片制造工艺技术的进步,存储芯片质量稳定、可靠性高,一般内存芯片已不用校验。
因此只在不允许出错和需随时停止检查的特别重要场合(如大型服务器)才须用校验。
(14)试用6116芯片(2K×8)组成8KB的RAM,要求画出它与8088CPU的连线图,
并给出各芯片的地址范围。
6116芯片
(1)地址范围:
0~3FFH
6116芯片
(2)地址范围:
400H~7FFH
6116芯片(3)地址范围:
800H~0BFFH
6116芯片(4)地址范围:
0CFFH~0FFH
(15)在Pentium机中,对存储器访问都要进行哪些检查?
这些检查都起什么作用?
Pentium机中,在保护模式下对存储器访问要进行如下检查:
(1)段界限检查,防止越段存取,造成代码和数据的混乱;
(2)类型检查,检查和防止程序出错;(3)特权级检查,防止低特权用户去访问拥有较高特权级的段,以免系统程序和数据受到破坏;(4)指针有效性检查,以维护段间和特权级间的保护和隔离;(5)页面级保护检查,以区分普通用户还是系统保管员,以及是读还是写。
第四章习题答案
1.判断题
TFTFFFFFFF
2.单项选择题
BCADDCCADA(注:
第9题中“新增了”应为“设置了”)
3.多项选择题
DEFGABEFABABCDFAE
ABDEFBCDFABCBCD
4.填空题
(1)DS、CS、ES、SS
(2)40160H、4000:
015CH
(3)34650H、8
(4)384DH、37E6H
(5)2440H、6880H
(6)非压缩BCD除法、被除数、前
(7)2、8、80H、7FH(如以该循环指令存储地址算,则为0FF82H、0081H(16位补码))
(8)DECCX、JNZNEXT
(9)57、21、70、SSE、128
(10)固定、字、操作、寄存器
5.简答题
(1)什么是寻址方式?
基本指令集对存储器操作数的寻址方式有哪些?
简单归纳之。
寻址方式就是寻找操作数的方式。
基本指令集对存储器操作数的寻址方式有6种:
立即寻址、直接寻址、寄存器间接寻址、寄存器相对寻址(即基址相对寻址和变址相对寻址)、基址变址寻址、基址变址相对寻址。
堆栈操作使用堆栈寻址,属隐含的寄存器间接寻址。
(2)80x86扩展寻址方式有哪些?
简述之。
80x86扩展寻址方式有比例变址寻址、基址比例变址寻址、带位移的基址比例变址寻址(即基址比例变址相对寻址)。
(3)用一条指令将CF标志位清0,请至少列出8条。
SUBAL,AL;SUBBX,BX;CMPCL,CL;CMPDX,DX;
ANDAX,0FH;ORBL,[SI];XORFIRST[BX],DL;TESTCX,TOP;
(4)用3种不同的编程方法将AL中的符号扩展到AH中。
方法1:
CBW方法2:
RCLAL,1方法3:
ROLAL,1
PUSHFLAHF
RCRAL,1RORAL,1
MOVCX,8MOVCL,8
NEXT:
POPFAGAIN:
SAHF
RCLAH,1RCLBH,1
LOOPNEXTDECCL
JNZAGAIN
MOVAH,BH
(5)简述查表指令XLAT的功能,表首地址如何指明?
在XLAT指令执行前后AL的内容各是什么?
查表指令把AL的内容作为索引值到字节表格中相应位置查找该索引值所指向的内容代码。
指令执行前字节表格的首地址事先放入BX中;在XLAT指令执行前,AL中的内容为表格中内容的索引值,即所查找元素在表格中的位置(与表首的字节距离),指令执行后将查到的内容放到AL中(AL原来的索引值被冲掉)。
(6)数据段中BUFFER开始的100个字节单元中存放了压缩的BCD码,编程将它们舒展成非压缩BCD码,并送到同一段的DISP开始的单元中。
…
MOVCX,100
MOVSI,BUFFER
MOVDI,DISP
NEXT:
MOVAL,[SI]
MOVAH,AL
ANDAL,0FH
MOV[DI],AL
INCDI
XCHGDX,CX
MOVCL,4
SHRAH,CL
MOV[DI],AH
INCSI
INCDI
XCHGCX,DX
LOOPNEXT
…
(7)串操作指令有哪些特点?
如何寻找源串和目标串中的元素?
对字元素的串进行操作时地址指针如何变化?
依据什么?
串操作常用于数据块的快速移动、比较、搜索和存取。
串指令每次对串中一个元素执行一次操作,配上重复前缀可按条件完成对整个串的重复操作。
串操作指令本身都是单字节指令,加上重复前缀共2个字节。
串操作均为隐含寻址,源串地址(开始是起始地址)由DS:
SI指明,目标串地址(开始是起始地址)由ES:
DI指明。
对字元素的串进行操作时,依据标志位DI的值,每操作一次地址指针加2(DF=0)或减2(DF=1)。
(8)简述子程序调用与中断调用的异同。
相同的是都要把调用指令的下一条指令地址(即返回地址)入栈保存,然后转向子程序的首地址去执行;两种调用都没有条件判断。
不同的是子程序调用分段内调用和段间调用,段内调用只IP入栈,段间调用CS和IP都要入栈,段内/段间调用又分直接调用和间接调用。
而中断指令是种特殊的调用指令(调用例行中断子程序),是段间调用;与间接调用的段间CALL指令相同,在寻址方式上中断是是间接调用而不是直接调用;中断调用必须把CS和IP都入栈保存,而且还要首先把标志寄存器FL入栈保存。
(9)SIMD指令的特点是什么?
实现SIMD功能的多媒体指令集主要有哪几个?
各有何特点?
SIMD(SingleInstructionMultipleData:
单指令多数据)一条指令能处理多个数据,使操作的并行性进一步增强,提高了计算机的多媒体处理能力。
SIMD指令集是开放的,包括MMX、3DNOW!
、SSE和SSE2等。
MMX指令特别适用于整数运算密集的图像处理、视频和音频回放等多媒体应用,提高其性能。
3DNOW!
很适合(单精度)浮点运算密集的3D图形处理、语音识别、环绕音效等数字信号处理,能大幅提高3D游戏性能。
SSE和SSE2擅长双精度的浮点运算,极大地满足了三维动画、动态音像、实时通信等流媒体应用的需要,极大地提升了计算机在高级图形、三维动画、数据流音频和视频、语音识别等方面的性能。
(10)RISC指令集有哪些特征?
什么是CRISC技术?
RISC指令集特点如下:
指令简单,每周期至少执行一条指令;寄存器到寄存器操作为主;简单的寻址方式,绝大多数指令使用寄存器寻址方式;简单的指令格式,指令长度固定(典型长度是4字节),且在字边界上对齐。
RISC设计包括某些CISC特色好处颇多,CISC设计融入某些RISC技术大有裨益,因此出现了融入RISC技术的CISC计算机,称之为CRISC,融入某些RISC的CISC技术就是CRISC技术。
第五章习题答案
1.
FFTTTFTTTT
2.单项选项题
AAABBBCDCC
3.多项选择题
ABCABCDADABCDEABDEGHIJ
ABFBCCABDEFHACE
4.填空题
(1)指令性语句、指示性语句
(2)SEGMENT、ENDS
(3)代码、NEAR、FAR、NEAR
(4)EVEN
(5)1344、2688
(6)48
(7)7、SMALL、HUGE(巨型模式)
(8)1、2、72、144、4
(9)0或1或多
(10)嵌入式、多模块混合式
5.简答题
(1)简述汇编程序的主要功能,并简要说明MASM的汇编过程。
汇编程序将汇编语言源程序翻译成计算机硬件可以理解并执行的二进制代码程序,并生成执行所需的列表文件和交叉引用文件。
汇编程序运行时显示版本信息后,提问要求输入:
源程序文件名、生成的目标文件名,以及列表文件名、交叉文件名;4个问题回答完毕(后2个可选),MASM就对源程序进行汇编。
汇编中若发现源程序有语法错误则列出错误的语句和错误的代码,指出是什么性质的错误;最后列出警告错误(WarningErrors)和严重错误(SevereErrors)的总数。
若汇编正确,产生相应的1~3个文件。
(2)简述汇编语言源程序执行完毕返回操作系统有哪几种方式?
哪种方式的兼容性最好?
使用功能号为4CH的DOS功能调用,是最有效且兼容性最好的返回DOS方式。
将主程序定义为远过程,由RET语句返回。
利用20H号的BIOS中断调用,这种方式只能用于扩展名为.COM的可执行文件。
利用0号DOS功能调用,该方式与INT20H一样,只有在.COM类型的文件中才可使用。
(3).EXE和.COM?
两种文件编程格式有何异同?
简述之。
哪种格式适合编写大型程序?
.EXE文件编程格式的源程序允许使用多个逻辑段,最少有一个代码段。
代码段的开始用一条ASUME语句设置段约定。
在实模式下,每个逻辑段的目标模块最大64KB;在保护模式下,80286不超过16MB,32位的80x86不超过4GB。
.ASM源程序汇编、连接后生成可执行文件.EXE,.EXE文件有重定位信息。
DOS装入.EXE文件,根据重定位信息完成对目标模块的重定位,然后在目标程序的上方(低地址处)自动生成256个字节的程序段前缀PSP(ProgramSegmentPrefix),DOS通过PSP管理用户程序(如程序结束时返回DOS的途径等)。
.COM文件编程格式只允许源程序设置一个代码段(堆栈在代码段内),代码段的目标模块要小于64KB,程序中使用的数据可集中设置在代码段的开始或末尾,程序的启动指令须设置在代码段内偏移量为100H的单元处。
.COM文件没有重定位信息,比.EXE文件要小得多。
DOS装载.COM文件时也在用户程序上方生成256个字节单元的程序段前缀PSP,PSP开始处存放一条中断指令INT20H(2个字节)。
DOS在装入.COM文件时自动在用户区高端(高地址处)设置堆栈,.COM文件编程不需要设置堆栈。
因此,.EXE文件编程格式适合编写大型程序。
(4)为什么在段分配语句ASSUME后,还要用指令对段寄存器DS、ES和SS等传送段基址值?
而对CS不需用指令显式地传送?
ASUME伪指令只是建立段名和段寄存器之间的关联,并未把各个段的段基址装入相应的段寄存器中,因此还要用指令对段寄存器DS、ES和SS等传送段基址值;而对CS和IP,是按照结束伪指令END[<起始地址>]指定的地址来自动完成段基址和偏移地址装入的。
(5)下面四条MOV指令的等价指令是什么(用立即数方式表示)
BUFADW20DUP(?
)
BUFBDB30DUP(?
)
BUFCDB'COMPUTOR'
MOVAX,LENGTHBUFA
MOVBL,LENGTHBUFB
MOVCL,LENGTHBUFC
MOVDX,SIZEBUFA
等价的指令依次是:
MOVAX,20
MOVBL,30
MOVCL,8
MOVDX,40
(6)内存中有一个七段码表数组SSEG,顺序存放了对应十六进制基数0~F的七段LED显示代码。
请编程将CX中的4位十六进制数转换成LED显示代码,存于DISPBUF开始的内存单元中。
LEADI,DISPBUF
MOVBX,OFFSETSSEG
MOVDH,4
NEXT:
MOVAL,0
MOVDL,4
AGAIN:
RORCX,1
RCLAL,1
DECDL
JNZAGAIN
XLAT
MOV[DI],AL
INCDI
DECDH
JNZNEXT
(7)编写一个程序,要求能从键盘接收一个数N(0~9之间),然后在屏幕上显示出来,并响铃N次(响铃的ASCII码为07H)。
MOVAH,1
INT21H
ANDAL,0FH
LP:
MOVDL,07H
MOVAH,2
INT21H
DECAL
JNZLP
(8)有20个学生的成绩在SCHREC数组中(自定),试编制一个子程序统计60~69分、70~79分、80~89分、90~99分和100分的人数,分别存放在S6、S7、S8、S9和S10单元中。
DATASEGMENT
SCHRECDB<…>;设置20个学生成绩
S10DB0
S9DB0
S8DB0
S7DB0
S6DB0
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
STATISPROCFAR
MOVAX,DATA
MOVDS,AX
LEASI,SCHREC
MOVCX,20
AGAIN:
MOVDI,OFFSETS6
MOVAL,[SI]
CMPAL,100
JGRELP
JZTOS10
CMP90
JGETOS9
CMP80
JGETOS8
CMP70
JGETOS7
CMP60
JLRELP
LP:
INC[DI]
JMPRELP
TOS7:
INCDI
JMPLP
TOS8:
ADDDI,2
JMPLP
TOS9:
ADDDI,3
JMPLP
TOS10:
ADDDI,4
JMPLP
RELP:
INCSI
LOOPAGAIN
MOVAX,4C00H
INT21H
STATISENDP
CODEENDS
END
(9)数组GRADE中存放了某班12个学生“C语言程序设计”课程的成绩。
下面程序根据GRADE的成绩排出名次,将排出的名次存放在RANK数组中,请完成程序填空。
DATASEGMENT
GRADEDW85,72,61,76,72,83,58,94,80,95,48,66
RANKDW12DUP(?
)
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
BEGIN:
MOVAX,DATA
MOVDS,AX
MOVDI,0
MOVCX,12
LP1:
PUSHCX
MOVCX,
MOVSI,0
MOVAX,GRADE[DI]
MOVDX,0
LP2:
CMP
JBEGO_ON
INC
GO_ON:
ADDSI,2
LOOPLP2
POP
INCDX
MOVRANK[DI],DX
ADDDI,2
LOOPLP1
MOVAH,4CH
INT21H
RET
CODEENDS
ENDBEGIN
程序执行完毕,RANK数组的内容是什么?
四处填空依次为:
12;GRADE[SI],AX;DX;CX
程序执行完毕,RANK数组内容依次是:
3、7、10、6、7、4、11、2、5、1、12、9
(10)什么是模块?
模块化程序设计有哪些优点?
划分模块应依据哪些基本原则?
从汇编程序设计的角度看,能够独立汇编的一个或若干个逻辑段的集合就是一个模块。
模块化程序中每个模块都能独立汇编,但只有一个主模块,其它都是子模块。
模块化程序结构清晰,可读性好,可靠性高,便于将大型程序分解成若干独立模块,由多人同时分别设计、调试,最后连接成一个可执行文件。
整个程序开发周期短,调试、维护方便,开发和运行成本低。
划分模块应遵循如下基本原则:
对任务总体规划,科学分解,自顶向下逐层分块并细化;
模块功能单一清晰,整体性好,内聚度高,独立性强;模块内合理使用顺序、分支、循环三种基本程序结构,尽量不使用无条件转移语句(以免破坏结构的完整性);
模块之间的控制耦合尽可能简单,每个模块应只有一个入口和一个出口,这样利于调试,不易出错;
模块之间的数据耦合尽量少,即模块之间的数据传送量要少,传送方式规范;
模块大小适中,太大削弱了模块化带来的好处,太小使模块连接、数据传送所占用的资源开销比重加大,经验表明,一个模块