微机原理及接口技术李干林习题参考解答.docx
- 文档编号:18382612
- 上传时间:2023-04-24
- 格式:DOCX
- 页数:43
- 大小:114.21KB
微机原理及接口技术李干林习题参考解答.docx
《微机原理及接口技术李干林习题参考解答.docx》由会员分享,可在线阅读,更多相关《微机原理及接口技术李干林习题参考解答.docx(43页珍藏版)》请在冰豆网上搜索。
微机原理及接口技术李干林习题参考解答
习题参考解答
1.1什么是微处理器、微型计算机、微型计算机系统?
参考答案:
将运算器和控制器集成在一块大规模集成电路芯片上作为中央处理部件,简称为微处理器;
以微处理器为核心,再配上存储器、接口电路等芯片,构成微型计算机;
微型计算机系统由硬件和软件系统两大部分组成:
(1)硬件系统由微型计算机和外设组成的计算机实体;
(2)软件系统是指为微型计算机运行的全部技术资料和各种程序,由系统软件和应用软件构成。
1.2什么是微型计算机的三种总线?
参考答案:
系统总线包含有三种不同功能的总线,即数据总线DB(DataBus)、地址总线AB(AddressBus)和控制总线CB(ControlBus)。
“数据总线DB”用于传送数据信息。
数据总线是双向三态形式的总线,即他既可以把CPU的数据传送到存储器或I/O接口等其它部件,也可以将其它部件的数据传送到CPU。
“地址总线AB”是专门用来传送地址的,由于地址只能从CPU传向外部存储器或I/O端口,所以地址总线总是单向三态的。
“控制总线CB”用来传送控制信号和时序信号。
1.3评估微型计算机的主要技术指标有哪些?
参考答案:
评估微型计算机的主要技术指标有:
⑴CPU的字长,决定计算机内部一次可以处理的二进制代码的位数;⑵内存储器容量与速度,内存储器容量是衡量它存储二进制信息量大小的一个重要指标,内存储器的速度用存取周期来衡量;⑶CPU指令执行时间,反映CPU运算速度的快慢;⑷系统总线的传输速率等。
1.4将下列十进制数分别转换为二进制、十六进制数。
⑴35⑵130⑶0.625⑷48.25
参考答案:
⑴100011B,23H⑵10000010B,82H
⑶0.101B,0.AH⑷110000.01B,30.4H
1.5将下列二进制数分别转换为十进制、八进制、十六进制数。
⑴101101B⑵11100110B⑶110110.101B⑷101011.011B
参考答案:
⑴45,55Q,2DH⑵230,346Q,E6H
⑶54.625,66.5Q,36.AH⑷43.375,53.3Q,2B.6H
1.6写出下列十进制数的原码、反码、补码(分别采用8位二进制和16位二进制表示)。
⑴38⑵120⑶-50⑷-89
参考答案:
⑴原码、反码、补码:
00100110B,0000000000100110B
⑵原码、反码、补码:
01111000B,0000000001111000B
⑶原码:
10110010B,1000000000110010B
反码:
11001101B,1111111111001101B
补码:
11001110B1111111111001110B
⑷-89原码:
11011001B,1000000001011001B
反码:
11001101B,1111111111001101B
补码:
11001110B1111111111001110B
1.7已知补码求出其真值和原码。
⑴21H⑵93H⑶45A6H⑷0DA25H
参考答案:
⑴真值:
+21H,原码:
21H⑵真值:
-6DH,原码:
EDH
⑶真值:
+45A6H,原码:
45A6H⑷真值:
-25DBH,0A5DBH
1.8将下列十进制数转换为压缩和非压缩格式的BCD码。
⑴12⑵55⑶147⑷368
参考答案:
⑴00010010B,0000000100000010B
⑵01010101B,0000010100000101B
⑶000101000111B,000000010000010000000111B
⑷001101101000B,000000110000011000001000B
1.9下列十进制数算术运算,试用8位二进制补码计算,并用十六进制数表示运算结果,判断是否有溢出。
⑴35-45⑵80+50⑶-70-60⑷-20+(-60)
参考答案:
各数的补码:
[35]补=00100011B,[-45]补=11010011B,
[80]补=01010000B,[50]补=00110010B,
[-70]补=10111010B,[-60]补=11000100B,
[-20]补=11101100B。
⑴35-45=11110110B=-10,结果正确,没有溢出;
⑵80+50=10000010B=-126,结果不正确,有溢出,因为130超出了8位补码的表示范围上限+127;
⑶-70-60=01111110B=-126,结果不正确,有溢出,因为-130超出了8位补码的表示下限-128;
⑷-20+(-60)=10110000B=-80,结果正确,没有溢出。
1.10分别写出下列字符串的ASCII码(十六进制表示)。
⑴3aB8⑵eF10⑶+5(0:
⑷Howareyou?
参考答案:
⑴33614238H⑵65463130H⑶2B3528303AH
⑷486F770061726500796F753FH
2.18086CPU内部由哪两部分组成?
它们的主要用途是什么?
参考答案:
8086CPU内部按功能分执行单元EU和总线接口单元BIU。
执行单元的功能:
负责指令的执行。
同时向BIU输出数据(操作结果),并对寄存器和标志寄存器进行管理。
在ALU中进行16位运算,数据传送和处理均在EU控制下进行。
总线接口单元的功能:
负责从内存或I/O端口取指令、取操作数和保存运算结果。
2.28086/8088CPU有哪些寄存器?
各有什么用途?
参考答案:
8086/8088CPU内部有14个16位的寄存器,按功能可分为:
通用寄存器(8个)、段寄存器(4个)和控制寄存器(2个)。
⑴.通用寄存器组
EU中有4个16位的通用寄存器,即数据寄存器AX、BX、CX、DX。
数据寄存器AX、BX、CX、DX一般用来存放数据,但它们都有各自的特定用途。
AX称为累加器,是最常用的寄存器。
它常用来存放算术逻辑运算中的操作数,而且一些操作要在AX中完成,如乘法操作和除法操作。
此外,所有的I/O指令都使用累加器与外设端口交换信息。
BX称为基址寄存器。
它常用来存放操作数在内存中数据段内的基地址。
CX称为计数器。
在设计循环程序时一般使用该寄存器存放循环次数。
DX称为数据寄存器。
在寄存器间接寻址的I/O指令中存放I/O端口地址;在做双字长乘除法运算时,DX与AX一起存放一个双字长操作数,其中DX存放高16位数。
⑵.指针和变址寄存器
8086/8088CPU中,有一组4个16位寄存器,它们是基址指针寄存器BP,堆栈指针寄存器SP,源变址寄存器SI,目的变址寄存器DI。
这组寄存器存放的内容是某一段地址偏移量,用来形成操作数地址,主要在堆栈操作和变址运算中使用。
SP称为堆栈指针寄存器;BP称为基址指针寄存器;SI称为源变址寄存器;DI称为目的变址寄存器。
⑶.段寄存器CS、DS、SS、ES
8086/8088有20位地址总线,一共可以寻址1M的空间。
而所有内部寄存器都是16位的,只能直接寻址64KB,因此采用分段技术来解决。
将1MB的存储空间分成若干逻辑段,每段最长64KB,这些逻辑段在整个存储空间中可以浮动。
8086/8088定义4个独立的逻辑段,分别为:
代码段、数据段、堆栈段和附加数据段,将程序代码或数据分别放在这4个逻辑段中。
每个逻辑段的段地址分别放在对应的段寄存器中,代码或资料在段内的偏移地址由有关寄存器或立即数给出。
8086/8088的4个段寄存器:
①CS称为代码段寄存器,用来存储程序当前使用的代码段的段地址(起始地址)。
②DS称为数据段寄存器,用来存放程序当前使用的数据段的段地址。
③SS称为堆栈段寄存器,用来存放程序当前所使用的堆栈段的段地址。
④ES称为附加数据段寄存器,用来存放程序当前使用的附加数据段的段地址。
⑷.指令指针寄存器IP
IP称为指令指针寄存器,用来存放预取指令在代码段内的偏移地址。
⑸.标志寄存器F
F称为标志寄存器,是一个16位的寄存器,其中只用了9位。
分别为6个状态标志位和3个控制标志位。
2.38086/8088CPU中标志寄存器有几位状态位?
有几位控制位?
其含义各是什么?
参考答案:
标志寄存器是一个16位的寄存器,其中只用了9位。
分别为6个状态标志位和3个控制标志位。
⑴状态标志位
状态标志位用来反映算术和逻辑运算结果的一些特征。
①CF:
进位标志位。
当进行加减运算时,若最高位发生进位或借位则CF=1,否则CF=0。
②PF:
奇偶标志位。
当运算结果的低8位中含有偶数个1时,PF=1,否则PF=0。
③AF:
辅助进位标志位。
加法或减法运算时,若结果的低字节的低4位向高4位有进位或借位,则AF=1;否则AF=0。
④ZF:
零标志位。
若当前的运算结果为0,则ZF=1;否则ZF=0。
⑤SF:
符号标志位。
与运算结果的最高位相同,当运算结果的最高位为1时,SF=1;否则为0。
⑥OF:
溢出标志位。
当运算结果超出了带符号数的范围,即溢出时,OF=1;否则OF=0。
⑵控制标志位
控制标志位有3个,用来设置控制条件来控制CPU的操作,由程序设置或清除。
①TF:
跟踪标志位。
②IF:
中断允许标志位。
用来控制可屏蔽中断的控制标志。
若IF=1,允许CPU接受可屏蔽中断请求;若IF=0,则禁止CPU回应可屏蔽中断请求。
IF的状态对非屏蔽中断及内部中断没有影响。
③DF:
方向标志位。
控制串操作指令用的标志。
2.4Intel8086CPU和8088CPU主要区别有哪些?
参考答案:
8086CPU与8088CPU的区别主要有以下4个方面:
⑴.内部结构
8086的指令队列有6B,而8088仅有4B。
它们的执行单元EU完全相同,而总线接口单元BIU却不完全相同。
8086CPU内、外部的数据总线(DB)都为16位,8088内部数据总线为16位,外部为8位。
⑵.引出线和内存组织
8086有一条高8位数据总线允许引出线
,它可以看做一条附加的地址线,用来访问内存的高字节,而A0用来访问内存的低字节。
⑶.地址/数据复用线
8086的地址/数据复用线是16位AD15~AD0;而8088仅有AD7~AD0复用,A8~A15仅作为地址线使用。
⑷.内存与I/O接口选通信号电平。
内存与I/O接口选通信号电平不同:
8086为M/
,即高电平进行存储器操作,低电平进行I/O操作;而8088则相反,为IO/
。
2.5逻辑地址和物理地址指的是什么?
如果已知逻辑地址为1200:
0ABCDH,其物理地址为多少?
参考答案:
把用段地址和偏移地址表示存储单元的地址称为逻辑地址,段地址和段内偏移地址经20位地址加法器生成的20位地址称为物理地址。
已知逻辑地址为1200:
0ABCDH,其物理地址为12000H+0ABCDH=1CBCDH。
2.6若CS为3000H,试说明现行代码段可寻址的存储空间的范围。
参考答案:
可寻址的存储空间的范围:
30000H+0000H~30000H+FFFFH,既:
30000H~3FFFFH
2.7设现行数据段位于存储器10000H到1FFFFH存储单元,DS段寄存器内容为多少?
参考答案:
一个逻辑段最大范围:
0000H~FFFFH,因此DS段寄存器内容为:
1000H。
2.8设双字节12345678H的起始地址是1000H,试说明这个双字在存储器中如何存放?
参考答案:
2.9已知堆栈段寄存器SS=4000H,堆栈指针SP=0100H,试将数据56789ABCH推入堆栈,画出进栈示意图。
最后栈顶SP=?
参考答案:
最后栈顶SP=400FCH
2.10试求出下列运算后的各个状态标志。
⑴1234H+6789H⑵23A5H–65C2H
参考答案:
⑴1234H+6789H=79BDH,CF=0,PF=1,AF=0,ZF=0,SF=0,OF=0;
⑵23A5H–65C2H=0BDE3H,CF=1,PF=0,AF=0,ZF=0,SF=1,OF=0。
2.118088CPU工作在最小模式时。
⑴当CPU访问存储器时,要利用哪些信号?
⑵当CPU访问I/O时,要利用哪些信号?
参考答案:
⑴IO/
=0,A19/S16~A16/S3,A15~A8,AD7~AD0,ALE,读存储器时:
=0,DT/
=0(写存储器时:
=0,DT/
=1),
。
⑵IO/
=1,A19/S16~A16/S3,A15~A8,AD7~AD0,ALE,读IO端口时:
=0,DT/
=0(写IO端口时:
=0,DT/
=1),
。
2.12简要说明8086/8088的指令周期、总线周期、机器周期和时钟周期有何不同。
参考答案:
(1)指令周期由若干个机器周期组成,而机器周期时间又包含若干个时钟周期,总线周期一般由4个时钟周期组成。
(2)机器周期和总线周期的关系是:
机器周期指的是完成一个基本操作的时间,这个基本操作有时可能包含总线读/写,因而包含总线周期,但是有时可能与总线读/写无关,所以,并无明确的相互包含关系。
2.13什么情况下插入TW等待周期?
插入TW多少,取决什么因素?
参考答案:
在T3状态,CPU采样READY线,若READY信号无效,插入TW状态;插入TW状态为一个至多个,直到READY信号有效,才进入T4状态。
2.14什么情况下会出现总线的空闲周期?
参考答案:
只有在8086CPU和存储器或I/O接口之间传输数据时,CPU才执行总线周期,当CPU不执行总线周期时(指令队列6个字节已装满,EU未申请访问存储器),总线接口部件不和总线打交道,就进入了总线空闲周期Ti。
在空闲周期中,虽然CPU对总线进行空操作,但是CPU内部操作仍然进行,即EU部件在工作。
所以说,总线空操作是总线接口部件BIU对总线执行部件EU的等待。
3.1指出下列传送类指令源操作数的寻址方式。
(1)MOVSI,120
(2)MOV[BX],DX
(3)MOVAX,100[BX][DI](4)MOVDI,[BX+100]
(5)MOVAX,[1000H](6)MOVAX,80H
(7)MOVAX,[BX](8)MOVCX,[BX][SI]
参考答案:
(1)立即数寻址
(2)寄存器寻址
(3)基址加变址寻址(4)基址寻址
(5)直接寻址(6)立即数寻址
(7)基址寻址(8)基址加变址寻址
3.2指出下列指令中存储器操作数物理地址的计算表达式。
(1)MOVSI,[BX]
(2)MOV8[DI],DX
(3)MOVAX,[BP][SI](4)ADDDI,[BX+100]
(5)ADDAX,[1000H](6)SUBAX,[BX+DI+80H]
(7)ADDAX,ES:
[BX](8)DECWORDPTR[SI]
参考答案:
(1)DS×16+BX
(2)DS×16+DI+8
(3)SS×16+BP+SI(4)DS×16+BX+100
(5)DS×16+1000H(6)DS×16+BX+DI+80H
(7)ES×16+BX(8)DS×16+DI
3.3指出下列指令中的错误。
(1)MOVBX,AL
(2)MOVCS,AX
(3)MOV100,CL(4)MOV[BX],[1000H]
(5)PUSH1234H(6)MOVCS,1200H
(7)XCHGAH,12H(8)INC[2000H]
(9)ADD[BX],10(10)OUT258H,AX
参考答案:
(1)源操作数和目的操作数寄存器类型不匹配
(2)代码段寄存器CS不允许赋值
(3)立即数不能做目的操作数
(4)内存单元之间不能直接传送
(5)立即数不能做堆栈指令操作数
(6)代码段寄存器CS不允许赋值
(7)立即数不能做交换指令操作数
(8)字类型还是字节类型不明确
(9)目的操作数类型不明确
(10)端口地址大于8位二进制数,需要通过DX传送。
3.4设(SP)=3000H,(AX)=1234H,(BX)=5678H,指出执行下列指令后相关寄存器的
内容。
PUSHAX
PUSHBX
POPAX
POPBX
参考答案:
执行后,(AX)=5678H,(BX)=1234H,(SP)=3000H。
3.5若AX=1234H,BX=3456H,当执行SUBAX,BX指令后,求AX和标志寄存器CF、AF、SF、ZF和OF标志位的值?
参考答案:
(AX)=0DDDEH,CF=1,AF=1,SF=1,ZF=0,OF=0。
3.6设(AH)=0F6H,(AL)=90H,问执行SUBAH,AL指令后,AX中的值及标志寄存器CF、AF、SF、ZF、PF和OF标志位的值?
参考答案:
(AX)=6690H,CF=0,AF=0,SF=0,ZF=0,OF=0,PF=1。
3.7设(BX)=1000H,(DI)=0050H,执行LEABX,[BX+SI-0200H]后,(BX)=?
参考答案:
(BX)=0E50H
3.8已知(DS)=2000H,(SS)=5000H,(AX)=0012H,(BX)=0340H,(CX)=0781H,
(BP)=0035H,(SI)=0100H,(DI)=0300H,(20440H)=2104H,(20742H)=0E2AH,(20372H)=6FD3H,试求单独执行下列指令后的结果。
参考答案:
(1)MOVDL,[BX][SI];(DL)=04H
(2)MOV[BP][DI],CX;(50336H)=07H
(3)LEABX,100H[BX][DI];(BX)=0740H
MOVDX,2[BX];(DX)=0E2AH
(4)SUBSI,CX;(SI)=0F97FH
(5)XCHGCX,32H[BX];(CX)=6FD3H
3.9下列指令完成什么功能?
(1)NEGBX
(2)MULBL
(3)DIVCL(4)DECAX
(5)SBBAX,CX(6)INCDL
(7)ADCAX,1000H(8)SARAL,CL
(9)DAA(10)CBW
参考答案:
(1)将BX中的内容求补(正数变负数或负数变正数,绝对值不变)后送回BX。
(2)BL×AL,结果送AX。
(3)AX/CL,商存于AL,余数存于AH。
(4)AX中值减1,结果送回AL。
(5)AX中的值减去BX中的值再减去CF中的值,结果送回AX。
(6)DL中的值当无符号数加1,结果送回DL。
(7)AX中的内容加上1000H后,再加上CF的值,结果送回AX。
(8)AL中的值向右移,移动位数为CL中的值,AL左边补充符号位的值。
(9)将AL中的两位BCD码加法运算的结果调整为两位压缩型十进制数,仍保留在AL中。
(10)将AL的最高有效位扩展至AH。
3.10已知AX=3405H,BX=0FE1H,CX=0002H,DX=2A3EH,求下列每条指令执行后目的操作数的结果。
(1)ANDAH,BL
(2)ORCL,20H
(3)NOTDX(4)XORCX,0FE3H
(5)TESTAL,80H(6)CMPBX,OF123H
(7)SHRDX,CL(8)SARAL,CL
(9)RCLAL,1(10)RORDX,CL
参考答案:
(1)(AH)=02H
(2)(CL)=22H
(3)(DX)=0D5B1H(4)(CX)=0FE1H
(5)(AL)=05H(6)(BX)=OFE1H
(7)(DX)=0A8FH(8)(AL)=01H
(9)(AL)=0AH(10)(DX)=8A8FH
3.11设(AX)=54D1H,执行下列程序段指令后,求相应的结果。
MOVBL,AH参考答案:
MOVCL,AL
ADDBL,100;BL=0B8H
XCHGAL,BL;AL=0B8H
SUBAL,CL;AX=54E7H
JSHH
ANDAL,0FH
HH:
ADCAH,BL;AX=26E7HBL=0D1H
3.12设(AX)=1023H、(BX)=0430H,执行下列程序段指令后,求相应的结果。
MOVCL,2参考答案:
SHRAH,CL;AX=0423H
ADDBX,AX;BX=0853H
JMPNEXT
MULBL
NEXT:
ORAX,BX;AX=0C73H
HLT
3.13已知当前数据段中有一个十进制数字0~9的7段ASCII表,其数值依次为30H~39H,其首地址为2000H。
要求用XLAT指令将十进制数46转换成相应的7段代码值,存到AX寄存器中,试写出相应的程序段。
参考答案:
MOVBX,2000H
MOVAL,4
XLAT
MOVAH,AL
MOVAL,6
XLAT
HLT
3.14设有程序段:
DATASEGMENT
STRINGDB‘Todayissaturdy!
’
NEQU$-STRING
DATAENDS
试用字符串指令完成以下功能:
⑴把该字符串传送到附加段中偏移量为CHAR1开始的内存单元中;
⑵检查该字符串是否有“!
”字符,若有将找到的第一个“!
”用“?
”将其替换。
参考答案:
⑴CLD
MOVCX,N
LEASI,STRING
LEADI,CHAR1
REPMOVSB
⑵LEADI,STRING
MOVAL,‘!
’
MOVCX,N
CLD
REPNESCASB
MOVAL,‘?
’
MOV[DI],AL
3.15阅读程序段,说明其完成的功能。
MOVCX,100
MOVDL,0
MOVBX,1000H
LP1:
MOVAL,[BX]
CMPAL,0
JNZLP2
INCDL
LP2:
INCBX
LOOPLP1
MOV[BX],DL
HLT
参考答案:
程序段的功能:
统计从数据段偏移地址1000H的100个字节单元内容0的个数,并将统计结果存入数据段偏移地址为1064H的内存单
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 接口 技术 李干林 习题 参考 解答