微机原理及接口技术习题答案.docx
- 文档编号:11498379
- 上传时间:2023-03-02
- 格式:DOCX
- 页数:53
- 大小:158.39KB
微机原理及接口技术习题答案.docx
《微机原理及接口技术习题答案.docx》由会员分享,可在线阅读,更多相关《微机原理及接口技术习题答案.docx(53页珍藏版)》请在冰豆网上搜索。
微机原理及接口技术习题答案
第一章习题及答案
1.微处理器内部包含哪三大部分?
解:
ﻩ运算器、控制器和寄存器组。
2.完成下列数制的转换
①10101101B=( )D=( )H
解:
10101101B=173D=ADH。
②0.11B=( )D
解:
0.11B=0.75D。
③211.25=( )B=( )H
解:
211.25=11010011.01B=D3.4H。
④10111.0101B=( )H=( )BCD
解:
10111.0101B=17.5H=23.3125D=(00100011.001100010010 0101)BCD
3. 已知X=+1011010B,Y=–0011011B,设机器数为8位,分别写出X、Y的原码、反码和补码。
解:
4.已知X的真值为32,Y的真值为–19,求
解:
5.已知X=51,Y=–86,用补码完成下列运算,并判断是否产生溢出(设字长为8位)。
①X+Y ②X-Y
③ –X+Y ④–X-Y
解:
[X]补=00110011B
[Y]补=[Y]反+1=[11010110]反+1=10101001+1=10101010B
[X+Y]补=[X]补+[Y]补=00110011B+10101010B=11011101B
X+Y=[[X+Y]补]补=[11011101]补=10100010+1=10100011B
10100011B,因为
所以未产生溢出。
② 11110111B,因为
,所以产生溢出。
③01110111B,因为
所以产生溢出。
④00100011B,因为
所以未产生溢出。
6. 若使与门的输出端输出高电平,则各输入端的状态是什么?
解:
各输入端为高电平。
7. 若使与非门的输出端输出低电平,则各输入端的状态是什么?
解:
各输入端为高电平。
8. 如果74LS138译码器的Y4端输出低电平,则C、B、A三个输入端的状态分别是什么?
解:
C、B、A三个输入端的状态分别是‘1’,‘0’,‘0’。
第二章习题及答案
1.8086/8088CPU由哪两大功能部分所组成?
简述它们的主要功能?
解:
8086/8088CPU由EU和BIU两大功能部分组成。
执行单元EU主要完成指令的译码和执行。
执行单元通过EU控制电路从BIU中取出指令,经过指令译码形成各种定时控制信号,向EU内各功能部件发出相应的控制命令,以完成指令所规定的操作。
总线接口单元BIU是8086/8088同外部联系的接口。
它负责所有涉及外部总线的操作,包括取指令、读操作数、写操作数、地址转换和总线控制等。
BIU内部设置指令预取队列,每当指令队列有两个或两个以上的字节空间,且执行单元未向BIU申请读/写存储器操作数时,BIU顺序地预取后续指令的代码,并填入指令队列中。
当EU执行的是转移指令时,则BIU清除当前的指令预取队列的内容,从新的地址取回指令,并立即送到EU去执行,然后,从后续的指令序列中取回指令填满队列。
2.什么是指令流水线?
指令流水线需要哪些硬件支持?
解:
指令流水线是指8086/8088CPU内部的执行单元EU和总线接口单元BIU通过指令预取队列协同工作从而实现指令的并行执行。
指令流水线最主要的硬件支持是BIU内部的指令预取队列。
3.逻辑地址如何转换成物理地址?
已知逻辑地址为2D1EH:
35B8H,对应的物理地址是什么?
解:
逻辑地址是段基址和段内偏移地址形式的地址。
ﻩ物理地址=段基址×16+段内偏移
已知逻辑地址为2D1EH:
35B8H,则对应的物理地址
4.8088和8086的指令预取队列的长度分别是多少?
解:
8088的指令预取队列的长度为4字节;8086的指令预取队列的长度为6字节。
5.简述8086/8088CPU内部的各寄存器的作用。
解:
AX、BX、CX和DX通用寄存器一般用于存放参与运算的数据或运算的结果。
SP:
用于存放堆栈栈顶的段内偏移量。
BP:
用于存放访问内存时的偏移地址。
ﻩSP和BP也可以用来存放数据,它们的默认段寄存器都是SS。
SI和DI通常在间接寻址方式中存放操作数的偏移地址。
在串操作指令中,DI的默认段寄存器是ES。
SI和DI也可以用来存放数据。
CS:
代码段寄存器,用于存放代码段的段基址。
DS:
数据段寄存器,用于存放数据段的段基址。
SS:
堆栈段寄存器,用于存放堆栈段的段基址。
ES:
附加段寄存器,用于存放附加段的段基址。
IP:
指令指针寄存器,用于存放CPU即将执行的下一条指令在代码段中的段内偏移地址。
FLAGS:
标志寄存器,用于存放指令执行结果的特征。
6.8086/8088CPU内部的状态标志寄存器共有几位标志位?
各位的含义是什么?
解:
状态标志寄存器共有9位标志位,其中包含6个状态标志位和3个控制标志位。
状态标志位:
CF(CarryFlag):
进位标志。
当算术运算结果使最高位产生进位或借位时,则CF=1;否则CF=0。
PF(Parity Flag):
奇偶标志。
若运算结果中的低8位含有偶数个1,则PF=1;否则PF=0。
AF(AuxiliarycarryFlag):
辅助进位标志。
运算过程中若D3位向D4有进位或借位时,AF=1;否则AF=0。
ZF(ZeroFlag):
零标志。
若运算结果为0,则ZF=1;否则ZF=0。
SF(SignFlag):
符号标志。
若运算结果为负,则SF=1;否则SF=0。
OF(OverflowFlag):
溢出标志。
当带符号数的补码运算结果超出机器所能表达的范围时,就会产生溢出,这时OF=1;否则OF=0。
控制标志位:
DF(DirectionFlag):
方向标志。
控制串操作指令的地址变化的方向。
当DF=0时,串操作指令的地址指针按增量变化;当DF=1时,串操作指令的地址指针按减量变化。
IF(InterruptFlag):
中断允许标志。
控制微处理器是否允许响应可屏蔽中断请求。
若IF=1,则允许响应;否则禁止响应。
TF(TrapFlag):
单步标志。
TF=1时,CPU工作在单步方式。
7.8086/8088系统中存储器的分段原则是什么?
解:
分段原则是要求段的起始单元的物理地址是16的整数倍,每段的物理长度为64KB。
8.当ALE有效时,8088的地址/数据总线上将出现什么信息?
解:
当ALE有效时,8088的地址/数据总线上将出现地址信息。
9. READY管脚的作用是什么?
解:
READY用于微处理器时序中插入等待状态。
若该引脚被置为低电平,则微处理器进入等待状态并保持空闲;若该引脚被置为高电平,则它对微处理器的操作不产生影响。
CPU在读、写操作时序中的T3时钟周期开始处,通过检测READY管脚的状态来决定是否插入TW等待时钟周期,以解决CPU与存储器或I/O接口之间速度不匹配的矛盾。
10.为什么在基于8086/8088的系统中经常需要使用缓冲器?
解:
由于基于8086/8088的系统驱动能力的不足,需要使用缓冲器。
11.8088工作在最小模式下包含哪些控制信号?
解:
最小模式下包含的控制信号有:
RD、WR、IO/M、ALE、DT/R、DEN和INTA等信号。
12. 若CS=4000H,则当前代码段可寻址的存储空间范围是多少?
解:
CS=4000H时,当前代码段可寻址的存储空间范围为40000H~4FFFFH。
第三章习题及答案
1.什么叫寻址方式?
8086指令系统中有哪几种寻址方式?
解:
寻址方式,即获得地址的方法,主要指获得段内偏移地址的方法,段基址常采用默认方式获得。
8086CPU指令系统的寻址方式有两类:
获得指令中操作数地址的方法。
获得要执行的下一条指令的地址的方法。
8086指令系统中有8种操作数寻址方式,立即寻址。
。
。
。
。
。
。
2.下列指令中BUFF为字节类型变量,DATA为常量,指出下列指令中源操作数的寻址方式:
(1)MOVAX, 1200
(2)MOVAL,BUFF
(3)SUBBX, [2000H]
(4)MOVCX, [SI]
(5)MOVDX,DATA[SI]
(6)MOVBL,[SI][BX]
(7)MOV [DI],AX
(8)ADDAX,DATA[DI+BP]
(9)PUSHF
(10)MOVBX,ES:
[SI]
解:
(1)MOVAX,1200ﻩﻩ ;立即寻址
(2)MOVAL, BUFFﻩ ;直接寻址
(3)SUB BX,[2000H]ﻩ;直接寻址
(4)MOV CX,[SI] ;寄存器间接寻址
(5)MOVDX,DATA[SI]ﻩ;寄存器相对寻址
(6)MOVBL,[SI][BX]ﻩ ;基址变址寻址
(7)MOV[DI],AXﻩﻩ ;寄存器寻址
(8)ADDAX,DATA[DI+BP]ﻩ ;基址变址相对寻址
(9)PUSHF ;隐含寻址
(10)MOVBX,ES:
[SI]ﻩﻩ;寄存器间接寻址
3.指出下列指令的错误并改正。
(1)MOV DS,1200
(2)MOVAL, BX
(3)SUB33H,AL
(4)PUSHAL
(5)MUL 45H
(6)MOV[BX],[SI]
(7)MOVS BYTEPTRDS:
[DI],BYTEPTRDS:
[SI]
(8)ADDDATA[DI+BP],ES:
[CX]
(9)JMPBYTEPTR[SI]
(10)OUT3F8H,AL
解:
(1)MOVDS, 1200 ;不能用立即数给段基址寄存器赋值
(2)MOVAL,BXﻩﻩ;操作数类型不一致
(3)SUB 33H,ALﻩﻩﻩ ;立即数不能作为目的操作数
(4)PUSHALﻩﻩ;压栈指令的操作数必须是字类型
(5)MUL 45Hﻩﻩ;乘法指令中的操作数不能是立即数
(6)MOV[BX],[SI]ﻩﻩ;源和目的操作数不能同时为内存操作数
(7)MOVS BYTEPTRDS:
[DI],BYTEPTR DS:
[SI]ﻩ; 目的操作数应该在ES段。
(8)ADDDATA[DI+BP], ES:
[CX];CX不能做间址寄存器使用
(9)JMP BYTEPTR[SI]ﻩ;操作数必须是字类型
(10)OUT3F8H, AL;16位的端口地址不能直接在输入输出指令中使用。
4.根据要求写出一条(或几条)汇编语言指令。
(1)将立即数4000H送入寄存器BX。
(2)将立即数4000H送入段寄存器DS。
(3)将变址寄存器DI的内容送入数据段中2000H的存储单元。
(4)把数据段中2000H存储单元的内容送段寄存器ES。
(5)将立即数3DH与AL相加,结果送回AL。
(6)把BX与CX寄存器内容相加,结果送入BX。
(7)寄存器BX中的低4位内容保持不变,其他位按位取反,结果仍在BX中。
(8)实现AX与-128的乘积运算。
(9)实现CX中高、低8位内容的交换。
(10)将DX中D0、D4、D8位置1,其余位保持不变。
解:
(1)将立即数4000H送入寄存器BX。
MOV BX,4000H
(2)将立即数4000H送入段寄存器DS。
MOVAX, 4000H
MOV DS,AX
(3)将变址寄存器DI的内容送入数据段中2000H的存储单元。
MOV[2000H],DI
(4)把数据段中2000H存储单元的内容送段寄存器ES。
MOVAX,[2000H]
MOVES,AX
(5)将立即数3DH与AL相加,结果送回AL。
ADD AL,3DH
(6)把BX与CX寄存器内容相加,结果送入BX。
ADDBX,CX
(7)寄存器BX中的低4位内容保持不变,其他位按位取反,结果仍在BX中。
MOVAX,BX,
NOTAX
ANDAX,0FFF0H
AND BX,000FH
ORBX,AX
(8)实现AX与-128的乘积运算。
MOVBX,-128
IMUL BX
(9)实现CX中高、低8位内容的交换。
MOVAL,8
ROL CX AL
(10)将DX中D0、D4、D8位置1,其余位保持不变。
0RDX,0111H
5.设SS=2000H,SP=1000H,SI=2300,DI=7800,BX=9A00H。
说明执行下面每条指令时,堆栈内容的变化和堆栈指针的值。
PUSH SI
PUSHDI
POPBX
解:
PUSH SI
(0FFFH)=23H
(0FFEH)=00H
SP=0FFEH
PUSHDI
(0FFDH)=78H
(0FFCH)=00H
SP=0FFCH
POPBX
BX=7800H
SP=0FFEH
6.内存中18FC0H、18FC1H、18FC2H单元的内容分别为23H、55、5AH,DS=1000H,BX=8FC0H,SI=1,执行下面两条指令后AX=?
DX=?
MOVAX,[BX+SI]
LEADX,[BX+SI]
解:
AX=5A55H
DX=8FC1H
7.回答下列问题:
(1)设AL=7FH,执行CBW指令后,AX=?
(2)设AX=8A9CH,执行CWD指令后,AX=?
DX=?
解:
(1)设AL=7FH,执行CBW指令后,AX=007FH
(2)设AX=8A9CH,执行CWD指令后,AX=8A9CH DX=FFFFH
8.执行以下两条指令后,FLAGS的6个状态标志位的值是什么?
MOVAX,847BH
ADDAX,9438H
结果为118B3H
解:
CF=1 PF=0(为运算结果的低8位奇偶) AF=1ZF=0 SF=0 OF=1
9.下面程序段将03E8H转换成十进制数并显示,填写指令后的空格。
MOVAX,03E8Hﻩ;AH=03H ,AL=E8H
MOV CX,4
MOVDI, 2000H ;DI= 2000H
MOVBX,10 ﻩ;BH= 00,BL=0AH
GO0:
SUBDX,DX ;CF= 0,ZF=1
DIVBX ;AX= 64H , DX=0
MOV[DI],DL;[DI]=0
INCDI ﻩ
LOOPGO0 ;CX= 3
MOVCX,4
GO1:
DECDI ﻩﻩ;DI=ﻩ2003Hﻩ
MOVDL,[DI] ;DL=01
OR DL,30H ;DL=31H
MOVAH,02;显示1位十进制数1
INT21H ﻩ
LOOPGO1
10.用串操作指令替换以下程序段:
ABC:
MOVAL,[SI]
ﻩ MOVES:
[DI],AL
ﻩINCSI
INCDI
ﻩLOOPABC
解:
REPMOVSB
11.设AX=AAH,顺序执行下列各条指令,填写空格。
(1)XORAX,0FFFFH ;AX=
(2)ANDAX,13A0H;AX=
(3)ORAX, 25C9H;AX=
(4)TESTAX,0004H ;AX=
解:
(1)XORAX,0FFFFH ;AX=FF55H
(2)AND AX,13A0H ;AX= 00A0H
(3)OR AX,25C9H ;AX=25EBH
(4)TEST AX,0004H ;AX= 00AAH
12.试写出执行下列3条指令后BX寄存器的内容。
MOVCL,2H
MOVBX,CO2DH
SHRBX,CL
解:
BX=300BH
13.执行下列程序段后,AX、BX的内容各是什么?
(1) MOVAX,0001H
MOVBX,8000H
NEGAX ;0-0001H
MOVCX,4
AA:
SHLAX,1
RCLBX,1
LOOP AA
HLT
解:
AX=FFF0HBX=000FH
(2)MOV AX,0 ﻫ MOVBX,1ﻫ ﻩ MOV CX,100
A:
ADDAX,BX
ﻩ INCBX
LOOPA
HLT
解:
AX=8080H BX=0101H
14.编写程序段,实现下述要求:
(1)使AX寄存器的低4位清0,其余位不变。
(2)使BX寄存器的低4位置1,其余位不变。
(3)测试AX的第0位和第4位,两位都是1时将AL清0。
(4)测试AX的第0位和第4位,两位中有一个为1时将AL清0。
解:
(1)使AX寄存器的低4位清0,其余位不变。
ANDAX,0FFF0H
(2)使BX寄存器的低4位置1,其余位不变。
ORAX,0FH
(3)测试AX的第0位和第4位,两位都是1时将AL清0。
TEST AX,01H
JZAA
TEST AX,10H
JZAA
MOV AL,0
HLT
AA:
......
(4)测试AX的第0位和第4位,两位中有一个为1时将AL清0。
TESTAX,11H
JZAA
MOV AL,0
AA:
.......
15.编写程序段,完成把AX中的16进制数转换为ASCII码,并将对应的ASCII码依次存入MEM开始的存储单元中。
例如,当AX的内容为37B6H时,MEM开始的4 个单元的内容依次为33H,37H,42H,36H。
解:
MOVCX,4
LEASI,MEMﻩﻩ
ADDSI,3ﻩﻩﻩ;SI指向MEM+3
CC:
MOVBX,AXﻩﻩ ;保存原始数据
ANDAX,000FHﻩﻩ ;取个位数
CMP AL,9ﻩ
JA AAﻩﻩﻩ ;在A~B之间就加37H
ADDAL,30Hﻩﻩ;在0~9之间就加30H
JMPBB
AA:
ADD AL,37H
BB:
MOV[SI],AL ;保存ASCII值
DECSI
PUSHCX
MOVAX,BX
MOVCL,4
SHRAX,CLﻩ ﻩ;准备取下一个数
POPCX
LOOP CC
16.编写程序段,求从TABLE开始的10个无符号数的和,结果放在SUM单元中。
解:
ﻩLEASI,TABLE
ﻩMOVCX,10
ﻩﻩXORAX,AX
NEXT:
ﻩADDAL,[SI]
ﻩADCAH,0
INCSI
LOOPNEXT
MOVSUM,AX
17.编写程序段,从键盘上输入字符串‘HELLO’,并在串尾加结束标志‘$’。
解:
LEADX,STRING ;设置字符串存放缓冲区首地址
MOVAH,0AH ;调用10号功能,输入字符串
INT21H
MOVCL,STRING+1;实际键入的字符个数送CL
ﻩXOR CH,CHﻩ
ADDDX,ﻩ2
ﻩADD DX,CX ;得到字符串尾地址
ﻩMOV BX,DX
ﻩMOVBYTEPTR[BX],'$'
18.编写程序段,在屏幕上依次显示1、2、3、A、B、C。
解:
LEABX,STR ;STR为6个字符的存放区域首地址
ﻩﻩ MOV CX,6
ﻩLPP:
MOVAH,2
ﻩﻩMOVDL,[BX]
ﻩﻩINC BX
ﻩINT 21H;利用2号功能调用依次先生6个字符
LOOPLPP
19.编写程序段,在屏幕上显示字符串“Hello World”。
解:
LEA DX,STRING;STRING字符的存放区域首地址
ﻩMOVAH,09H
INT21H ﻩ;利用9号功能调用显示字符串
20.编写程序段,把内存中首地址为MEM1的200个字节送到首地址为MEM2的区域。
解:
MOVAX,SEGMEM1
MOVﻩDS,AXﻩ;设定源串段地址
MOVAX,SEGMEM2
MOVES,AX;设定目标串段地址
MOVSI,0ﻩ;设定源串偏移地址
MOVDI,0;设定目标串偏移地址
MOVCX,200ﻩ;串长度送CX
CLDﻩﻩﻩﻩ;(DF)=0,使地址指针按增量方向修改
REPﻩMOVSB;每次传送一个字节,并自动
HLT
21.编写程序段,以4000H为起始地址的32个单元中存有32个有符号数,统计其中负数的个数,并将统计结果保存在BUFFER单元中。
解:
START:
MOV DI,OFFSETBUFFER
XOR AL,AL
MOV[DI],AL
MOV SI,4000H
ﻩﻩMOV CX,32
AA:
ﻩMOVAL,[SI]
ﻩﻩOR AL,ALﻩ
ﻩJNS X1
ﻩINC[DI]
X1:
INC SI
NEXT:
LOOPAA
ﻩHLT
第四章习题及答案
1.什么叫汇编?
汇编语言源程序的处理过程是什么?
解:
任何CPU都只能执行机器语言程序。
汇编语言不是机器语言,汇编语言程序必须通过具有“翻译”功能的系统程序的处理,处理的过程称为汇编。
汇编语言源程序经过汇编生成机器语言目标程序,简称目标程序。
目标程序经过连接程序连接,就得到可执行的机器语言程序文件。
2.汇编语言的语句类型有哪些?
各有什么特点?
解:
汇编语言的语句类型有两种:
指示性语句和指令性语句。
指示性语句可以位于任何段中,指令性语句必须位于代码段内。
●指示性语句
又称为伪操作语句,它不是8088/8086CPU的指令,它与汇编程序(assembler)有关。
指示性语句的功能主要是变量定义、为数据分配存储空间、告诉汇编程序如何对源程序汇编等。
源程序汇编后指示性语句不生成目标代码,所以常被称为伪指令。
●指令性语句
指令性语句是可执行语句,是8088/8086CPU的指令。
源程序汇编后指令性语句生成目标代码。
第3章中介绍的所有指令都是指令性语句的主体,其操作数最多只能有两个。
3.汇编语言源程序的基本结构是什么?
解:
汇编语言源程序由若干段组成:
数据段、附件数据段、堆栈段和代码段等,段与段之间的顺序可以随意排列,每一段由SEGMENT开始,以ENDS结束,每段的开始和结束都附有相同的名字。
一个程序一般定义三个段:
数据段、堆栈段和代码段,必要时增加定义附加数据段,能独立运行的程序至少包含一个代码段。
4.写出完成下述要求的变量定义的语句:
(1)为缓冲区BUFF保留200个字节的内存空间
(2)将字符串’BYTE’,’WORD’存放于某数据区
(3)在数据区中存入下列5个数据:
2040H,0300H,10H,0020H,1048H
解:
(1)为缓冲区BUFF保留200个字节的内存空间
BUFFDB200DUP(?
)
(2)将字符
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 接口 技术 习题 答案