微型计算机技术与接口部分复习题参考答案.docx
《微型计算机技术与接口部分复习题参考答案.docx》由会员分享,可在线阅读,更多相关《微型计算机技术与接口部分复习题参考答案.docx(36页珍藏版)》请在冰豆网上搜索。
微型计算机技术与接口部分复习题参考答案
《微型计算机技术及接口》部分习题参考答案
习题1部分答案
1.3假设四种CPU主存地址分别为16根、20根、24根以及32根,试问每种CPU可寻址内存多少字节?
解:
64K字节,1M字节,16M字节,4G字节
1.4设字长为16位,将下列十进制数转换成二进制数,十六进制数以及BCD数。
①65②129③257④513
解:
①0000000001000001B,0041H,(0000 0000 0110 0101)BCD
②0000000010000001B,0081H,(0000 0001 0010 1001)BCD
③0000000100000001B,0101H,(0000 0010 0101 0111)BCD
④0000001000000001B,0201H,(0000 0101 0001 0011)BCD
1.5设字长为8位,写出x、y的原码、反码和补码,并且用补码计算x+y,问是否有溢出?
①x=-78y=35②x=-64y=-66
解:
①[X]原=11001110,[X]反=10110001,[X]补=10110010
[Y]原=00100011,[Y]反=00100011,[Y]补=00100011
因为:
[X]补=10110010 [Y]补=00100011
那末:
[X]补+[Y]补=11010101=[X+Y]补 X+Y=-00101011 没有溢出
②[X]原=11000000,[X]反=10111111,[X]补=11000000
[Y]原=11000010,[Y]反=10111101,[Y]补=10111110
因为:
[X]补=11000000 [Y]补=10111110
那末:
[X]补+[Y]补=101111110,有溢出
1.6试用8位二进制写出以下数、字母以及控制命令的ASCⅡ码,还要写成奇校验、偶校验、标记校验及空格校验的ASCⅡ码。
①B②8③CR④NUL
解:
解答如下表中。
序 号
ASCⅡ码
奇校验码
偶校验码
标记校验码
空格校验码
①
42H
11000010B
01000010B
11000010B
01000010B
②
38H
00111000B
10111000B
10111000B
00111000B
③
0DH
00001101B
10001101B
10001101B
00001101B
④
00H
10000000B
00000000B
10000000B
00000000B
1.7设两个BCD数X=10001001,Y=01110101,试用列竖式的方法计算X+Y。
10001001
+01110101
11111110
+ 0110
100000100
+110
101100100
结果为:
(101100100)BCD
解:
1.8若规格化32位浮点数N的二进制存储格式为41360000H,求其对应的十进制数值。
解:
N=41360000H=01000001001101100000000000000000B
S=0
E=10000010
M=01101100000000000000000
N=(-1)S×(1.M)×2E-127
=1.011011×210000010-01111111
=1.011011×2011
=1011.011
习题2习题解答
2.1哪两部分组成?
它们的主要功能各是什么?
解:
8086CPU由总线接口部件BIU(BusInterfaceUnit)和执行部件EU(ExecutionUnit)两大部分组成。
总线接口部件的主要功能是形成物理地址、预取指令、指令队列排队、读/写操作数和总线控制。
执行部件的主要功能是进行指令译码并执行指令。
2.28086CPU中有哪些寄存器?
各有什么用途?
标志寄存器FLAGS有哪些标志位?
在什么情况下置位?
解:
8086CPU中的寄存器如教材图2-2所示:
其用途可参考教材。
标志寄存器(FLAGS)用于反映指令执行结果的状态,常用作后续条件转移指令的转移控制条件。
标志寄存器为16位,实际使用了其中的9位,所用各位的含义如教材中图2-3所示。
2.3什么是逻辑地址?
什么是物理地址?
如何将逻辑地址转换为物理地址?
解:
逻辑地址是指在程序和指令中使用的一种地址,它包括两部分:
段基地址和偏移地址。
段基地址说明每段在主存中的起始位置,它来自于段寄存器(CS、DS、ES、SS)。
偏移地址说明主存单元距离段起始位置的偏移量。
它是一个16位的偏移地址,根据指令的不同,它可以来自于8086CPU中不同的16位寄存器IP、SP、BP、SI、DI、BX等。
物理地址是指CPU对存储器进行访问时实际寻址所使用的地址,物理地址是由段寄存器与偏移地址共同确定的。
在实际工作时,从段寄存器中取出段基址,将其左移4位,再与16位偏移地址相加,就得到了物理地址,此地址在CPU总线接口部件BIU的20位地址加法器中形成。
物理地址的计算方法为:
物理地址=段基地址×16+偏移地址。
2.4设X=35H,Y=76H,进行X+Y和X-Y运算后,标志寄存器FLAGS的状态标志位各是什么?
解:
X+Y=0ABH,各标志位分别为:
OF=1,SF=1,ZF=0,AF=0,PF=0,CF=0
X-Y=0BFH, 各标志位分别为:
OF=0,SF=1,ZF=0,AF=1,PF=0,CF=1
2.58086有哪4个逻辑段?
各种逻辑段分别是什么用途?
解:
在8086的程序设计中,一个程序可以有代码段CS、数据段SS、堆栈段SS和附加段ES。
代码段CS用于存放程序;
数据段SS和附加段ES用于存放数据;
堆栈段SS用于存放数据(包括暂存数据和保护现场的数据)。
在形成物理地址时,CS、DS、ES和SS四个段寄存器的作用如下:
当取指令时,CPU以CS寄存器的值作段基址,再加上IP中的16位偏移地址,得到指令的物理地址;当进行堆栈操作时,段基地址CPU以SS为堆栈段的基地址,偏移地址由SP或BP来指定,当访问存储器的数据段时,数据段寄存器DS或附加段寄存器ES,再加上16位偏移地址,得到操作数的物理地址。
2.6请将如下逻辑地址用物理地址表示:
(1)FFFFH:
0
(2)45H:
18H(3)2000H:
4600H(4)B821H:
3456H
解:
用PA表示物理地址,PA=段基地址×16+偏移地址
(1)PA=FFFFH×16+0000H=FFFF0H
(2)PA=45H×16+18H=468H
(3)PA=2000H×16+4600H=24600H
(4)PA=B821H×16+3456H=BB666H
2.7若8086CPU工作于最小模式,试指出当CPU将AH的内容送到物理地址为91001H的存储单元时,以下哪些信号应为低电平:
M/
、
、
、
/S7、DT/
。
若CPU完成的是将物理地址91000H单元的内容读入AL中时,则上述哪些信号应为低电平。
解:
当CPU将AH的内容送到物理地址为91001H的存储单元时,CPU完成的是写存储器操作,且完成的是访问存储器的奇地址,因此,
=0,
/S7=0;
若CPU完成的是将物理地址91000H单元的内容读AL中时,CPU完成的是读存储器操作,且完成的是访问存储器的偶地址,因此,
=0,DT/
=0。
2.8什么是引脚的分时复用?
请说出8086CPU有哪些引脚是分时复用引脚?
如何分时复用?
解:
8086的数据线和地址线是利用复用的,所以常把8086的总线称为多路总线,即某一时刻总线上出现的是地址,另一时刻,总线上出现的是数据。
正是这种引脚的分时使用方法才能使8086用40条引脚实现20位地址、16位数据及众多的控制信号和状态信号的传输。
8086CPU的分时复用的引脚有:
地址/数据复用引脚是:
AD15~AD0,在总线周期的T1状态,传送地址信息,在其它状态则传送数据信息;
地址/状态复用引脚是:
A19/S6~A16/S3,这些引脚在总线周期的T1状态输出地址的高4位,在总线的T2、T3、TW和T4状态时,用来输出状态信息。
2.9试说明8086CPU工作在最大和最小模式下系统基本配置的差异。
解:
8086CPU可以工作在两种工作模式,即最小工作模式和最大工作模式。
最小工作模式用于单机系统,系统中所有总线控制信号全部由8086直接提供,因此系统中的总线控制电路可减到最少;最大工作模式用于多处理机系统,8086作为主处理器,其它的处理器为协处理器,协助主处理器工作。
在最大工作模式下,系统所需要的控制信号均由总线控制器8288提供。
8086具体工作在最大模式还是最小模式,完全由硬件连接决定。
当将CPU的第33号引脚MN/
接+5V时,8086工作在最小模式,当MN/
接地时,8086工作在最大模式。
2.10分析8086CPU两个中断输入引脚的区别,以及各自的使用场合。
解:
是中断响应信号,输出,三态,低电平有效。
该信号是CPU响应中断请求后,向中断源发出的中断响应信号,用以通知中断控制器,以便由中断控制器提供中断类型号。
在每个中断响应周期,CPU在
引脚上发出两个连续的负脉冲。
NMI是非屏蔽中断请求信号,输入,正跳变有效。
这类中断不受中断允许标志IF的影响,也不能用软件进行屏蔽。
当NMI引脚收到一个正沿触发信号时,CPU就会在结束当前指令后引起中断,执行中断类型号2的非屏蔽中断处理程序。
习题3部分答案
3.1Pentium在实地址模式和V86模式下,可访问存储器空间的大小分别为多少字节?
解:
①在实模式下,可以访问1MB存储器。
②在V86模式下,禁止分页情况下,只能访问1MB存储器。
允许分页情况下,可以访问4GB存储器。
3.2Pentium工作在只分段不分页、只分页不分段以及既分段又分页三种情况下,分别可访问存储空间的大小为多少字节?
解:
①只分段不分页,可以访问虚拟存储空间64TB
②只分页不分段,可以访问虚拟存储空间4GB
③分页分段,可以访问虚拟存储空间64TB
3.3下面哪些指令不能在实模式下运行?
为什么?
(1)MOVAL,DS:
[ESI]
(2)ADDAX,FS:
[EDI]
(3)MOVAL,DS:
[SI]
(4)ADCEAX,FS:
[DI]
解:
(1)、
(2)两条指令不能在实模式下运行,因为在实模式下不允许ESI,EDI作偏移地址。
3.4在虚拟8086模式下,在从虚地址转换到物理地址的过程中,可用到几个页目录项和几个页表项?
解:
可用到第1个页目录项,272个页表项。
3.5在段选择符中,TI=0和TI=1,分别在LDT还是GDT中访问描述符?
解:
TI=0访问GDT,TI=1访问LDT。
3.6当前的段描述符存放在何处?
解:
当前的段描述符存放在微处理器的Cache中。
3.12存储器特权级保护的分析。
设当前代码段的特权级CPL,段选择符请求的特权级RPL以及数据段描述符的特权级DPL如表3-5所示,回答4种组合中每一种组合能否将段选择符装入到数据段寄存器中,通过填写下表,回答哪几种能行?
哪几种不行?
并将理由填入表中。
表3-5CPL、RPL、DPL之间的关系
当前代码段CPL
段选择符请求级RPL
数据段描述符DPL
访问与否
原因
0
1
1
1
1
1
3
1
1
2
2
1
解:
第1行、第2行可以将段选择符装入到数据段寄存器中。
第3行、第4行则不行,原因分别是:
DPL<CPL
DPL<CPL、RPL
3.14Pentium超标量流水线共分几段,其中整数段有几段?
解:
共分为8段,其中整数段分为5段。
3.15下列各组指令中,哪些会产生数据相关?
数据相关的类型是什么?
(1)MOVAX,BX
ADDCX,SI
(2)MOVAX,DX
ADDBX,AX
(3)MOVCX,BX
MOVBX,DI
(4)DIVAX,SI
SUBAX,DI
解:
(1)不会产生数据相关。
(2)会产生数据相关,写后读(RAW)数据相关。
(3)会产生数据相关,读后写(WAR)数据相关。
(4)会产生数据相关,写后写(WAW)数据相关。
习题4部分答案
4.1分别指出下列指令中源操作数和目的操作数的寻址方式
(1)MOVEAX,12345678H
(2)MOV[ESI],AX
(3)MOV2[EDI],BX
(4)MOV2[BX+SI],DX
(5)MOVAX,[10]
(6)MOVEAX,2[ESI*4]
(7)MOVEAX,2[EBX*8][EDI]
(8)MOVEAX,[ESI][EBP+0FFFF0H]
(9)MOVEAX,2[EDI*8][EBP+80]
解:
指令
目的操作数的寻址方式
源操作数的寻址方式
(1)MOVEAX,12345678H
寄存器寻址
立即寻址
(2)MOV[ESI],AX
寄存器间接寻址
寄存器寻址
(3)MOV2[EDI],BX
变址寻址
寄存器寻址
(4)MOV2[BX+SI],DX
基址变址寻址
寄存器寻址
(5)MOVAX,[10]
寄存器寻址
直接寻址
(6)MOVEAX,2[ESI*4]
寄存器寻址
带有比例因子的变址寻址
(7)MOVEAX,2[EBX*8][EDI]
寄存器寻址
带有比例因子的基址变址寻址
(8)MOVEAX,[ESI][EBP+0FFFF0H]
寄存器寻址
带有位移量的基址变址寻址
(9)MOVEAX,2[EDI*8][EBP+80]
寄存器寻址
带有位移量和比例因子的基址变址寻址
4.2指出下列指令的错误原因
(1)INC[ESI]
(2)MOVAX,BL
(3)MOV2,EAX
(4)MOVAX,[DX]
(5)MOVAX,[BX+BP]
(6)MOVAX,[SI+DI]
(7)MOVAH,300
(8)MOV[ESI],[EDI]
(9)PUSHAL
(10)POPDH
(11)MOVCS,AX
(12)MOVSS,AX
(13)SHLAX,3
解:
指令
错误原因
(1)INC[ESI]
目的操作数[ESI]类型不明确
(2)MOVAX,BL
源操作数和目的操作数类型不一致
(3)MOV2,EAX
常数不能作目的操作数
(4)MOVAX,[DX]
DX不能作地址寄存器
(5)MOVAX,[BX+BP]
源操作数寻址方式错,两个寄存器都是基址寄存器
(6)MOVAX,[SI+DI]
源操作数寻址方式错,两个寄存器都是变址寄存器
(7)MOVAH,300
300超出AH允许范围
(8)MOV[ESI],[EDI]
源操作数和目的操作数不能同时为内存单元地址
(9)PUSHAL
入栈的数据必须是一个16或32位数据
(10)POPDH
出栈的数据是一个16或32位数据,DH是8位寄存器
(11)MOVCS,AX
CS值不能由程序员编程该变
(12)MOVSS,AX
SS值不能由程序员编程该变
(13)SHLAX,3
移位次数大于1,应先将移位次数送CL
4.3比较下列两条指令,指出它们的区别
MOVEAX,[ESI]
MOV[ESI],EAX
解:
这两条指令的区别是,指令“MOVEAX,[ESI]”是将内存单元DS:
[ESI]中的内容读到CPU中的寄存器EAX;而指令“MOV[ESI],EAX”是将CPU中寄存器EAX中的内容写入内存单元DS:
[ESI]。
4.4比较下列两条指令,指出它们的区别
MOVAX,[SI]
LEAAX,[SI]
解:
这两条指令的区别是,指令“MOVAX,[SI]”是将内存单元DS:
[SI]中的内容读到CPU中的寄存器AX;而指令“LEAAX,[SI]”是将内存单元DS:
[SI]的偏移地址送到AX。
4.5假定(EAX)=12345678H,不用计算,写出下面每条指令执行后(EAX)=?
①TESTEAX,1
②XOREAX,EAX
③SUBEAX,EAX
④CMPEAX,87654321H
解:
①(EAX)=12345678H②0③0④(AX)=12345678H
4.6假定(AX)=1234H,(BX)=5678H指出下列指令中
①哪些指令执行后,源操作数和目的操作数都不发生变化?
②哪些指令执行后,源操作数和目的操作数都发生变化?
③哪些指令执行后,源操作数不发生变化而目的操作数发生变化?
指令:
①TESTAX,1234
②ANDAX,BX
③SUBAX,1234H
④CMPAX,1234H
⑤XCHGAX,BX
解:
①指令“TESTAX,1234”和指令“CMPAX,1234H”执行后,源操作数和目的操作数都不发生变化。
变量
值
EA
BUF→
31H
0
32H
1
33H
2
34H
3
BCD→
4
5
6
7
②指令“XCHGAX,BX”执行后,源操作数和目的操作数都发生变化。
③指令“ANDAX,BX”和“SUBAX,1234H”执行后,源操作数不发生变化而目的操作数发生变化。
4.74.7阅读下面的程序,回答问题
1.【程序一】
DATASEGMENT
BUFDB'1234'
N=$-BUF
BCDDBNDUP(?
)
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
LEASI,BUF
MOVCX,N
LEADI,BCD+N-1
LOOP1:
MOVAL,[SI]
SUBAL,30H
MOV[DI],AL
INCSI
DECDI
DECCX
JNELOOP1
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
【问题一】画出内存分配图。
【问题二】说明程序功能,程序执行后,从BCD开始的N个字节单元中的内容是什么?
【问题三】找出一条指令代替指令“SUBAL,30H”,使程序功能不变。
【问题四】如果将代码段中的指令LEADI,BCD+N-1改成LEADI,BCD;DECDI改成INCDI,其它指令不变,程序执行后,从BCD开始的N个字节单元中的内容是什么?
【问题五】取消数据段的BCD存储区,将处理后的数据放回原处,应如何修改程序?
2.【程序二】
.MODELSMALL
.386
.STACK
.DATA
STRINGDB'AssembleLanguageispowerful'
N=$-STRING
NEWSTRDBNDUP(0)
.CODE
.STARTUP
MOVCX,N
LEASI,STRING
LEADI,NEWSTR
.REPEAT
MOVAL,[SI]
.IF(AL>='a')&&(AL<='z')
SUBAL,32
.ENDIF
MOV[DI],AL
INCSI
INCDI
.UNTILCXZ
.EXIT
END
【问题】写出程序功能,程序执行后,从NEWSTR开始的N个字节中的内容是什么?
解:
1.【程序一】
【问题一】内存分配图
变量
值
EA
BUF→
31H
0
32H
1
33H
2
34H
3
BCD→
4
4
3
5
2
6
1
7
【问题二】
程序功能是将从BUF开始的连续4个字符'1234'转变为4个对应的数值,按逆序存放到以变量BCD为首地址的存储单元中。
程序执行后,从BCD开始的N个字节单元中的内容是4321。
【问题三】
用指令“ANDAL,0FH”代替指令“SUBAL,30H”,程序功能不变。
变量
值
EA
BUF→
31H
0
32H
1
33H
2
34H
3
BCD→
1
4
2
5
3
6
4
7
【问题四】如果将代码段中的指令LEADI,BCD+N-1改成LEADI,BCD;DECDI改成INCDI,其它指令不变,程序执行后,从BCD开始的N个字节单元中的内容是1234。
【问题五】取消数据段的BCD存储区,将经处理后的数据放回原处,修改程序如下
DATASEGMENT
BUFDB'1234'
N=$-BUF
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
LEASI,BUF
MOVCX,N
LOOP1:
MOVAL,[SI]
SUBAL,30H
MOV[SI],AL
INCSI
DECCX
JNELOOP1
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
2.【程序二】
程序功能是将从STRING开始的N个字节中的字符串变成大写存放到从NEWSTR开始的N个字节中。
程序执行后,从NEWSTR开始的N个字节中的内容是"ASSEMBLELANGUAGEISPOWERFUL"。
4.8阅读下面的程序,填空。
1.【程序一说明】用减法实现除法。
X是被除数,Y是除数,处理结束后商存放在RESULT,余数存放在XYMOD。
【程序一】
被除数
除数
商
7
2
0
5
2
1
3
2
2
余数→
1
2
3
←商
图4-15用减法实现除法示意图
.MODELSMALL
.386
.STACK
.DATA
XDW7
YDW2
.DATA?
RESULTDW?
XYMODDW?
.CODE
.STARTUP
MOVAX,X
MOVBX,Y
MOVCX,0
.WHILE_____①____
SUBAX,BX
_____②_____
.ENDW
MOVRESULT,CX
MOVXYMOD,AX
.EXIT
END
2.【程序二说明】从BUF开始的11个单元中存放着11个整数,找出这11个数中正数并且是偶数的个数存入R中。
【程序二】
DATASEGMENT
BUFDB–2,5,-3,6,100,0,-20,-9,8,-110,21
N=①
RDW