微机原理及应用参考答案Word文档下载推荐.docx
《微机原理及应用参考答案Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《微机原理及应用参考答案Word文档下载推荐.docx(25页珍藏版)》请在冰豆网上搜索。
2.答:
(9分)
(1)存储器类型:
RAM
该系统的存储器容量为:
6KX8位(或:
6K字节)
(2)1#芯片的地址范围:
1000H~17FFH
2#芯片的地址范围:
0800H~0FFFH
3#芯片的地址范围:
0000H~07FFH
3.1)1KX4
2)2KX8或2KB
3)地址分配范围
第一组:
A19~A10
A9
A8
A7
A6
A5
A4
A3
A2
A1
A0
最小地址
0~0
00000H~
最大地址
1
003FFH
第二组:
0~1
00400H~
007FFH
第四章微型计算机及微处理器的结构和组成
1.BIU、EU、指令的译码和指令执行
2.4、16、16、6、20
3.8、16
4.1、2
1.B2.B
1.8086/8088微处理器内部有那些寄存器,它们的主要作用是什么?
执行部件有8个16位寄存器,AX、BX、CX、DX、SP、BP、DI、SI。
AX、BX、CX、
DX一般作为通用数据寄存器。
SP为堆栈指针存器,BP、DI、SI在间接寻址时作为地址寄存器
或变址寄存器。
总线接口部件设有段寄存器CS、DS、SS、ES和指令指针寄存器IP。
段寄存器
存放段地址,与偏移地址共同形成存储器的物理地址。
IP的内容为下一条将要执行指令的偏移
地址,与CS共同形成下一条指令的物理地址。
2.8086/8088CPU内部包含有哪6个专用寄存器?
它们的主要功能是什么?
有CSDSES、SSIP、PSW
CS(代码段寄存器)
:
用来存放当前代码段的基地址。
DS(数据段寄存器)
用来存放供程序使用的数据的一段存储区的基地址。
ES(附加段寄存器)
附加的数据段的基地址,
SS(堆栈段寄存器)
堆栈段的基地址。
IP:
16位寄存器。
指示代码段存储区域中下一条指令的段内偏移量。
PSW标志寄存器,用来指示微处理器的状态并控制其操作。
3.8086CPU状态标志位有哪些?
说明其符号、名称和含义
(SF):
符号标志位,本次运算结果的最高位为1时,SF=1,否则SF=0
4.执行下面两个数相加:
1010001101001101+0011001000011001
1101010101100110
分析其结果对下列标志位有何影响:
(6分)
(AF)=1
(OF)=0
(SF)=1(ZF)=0
(PF)=1(CF)=0
第五章8086/8088CPU的引脚功能、系统组成及时序
1.16、20、分时复用
2.锁存地址
3.系统中只有一个处理器,CPU提供全部的控制信号;
高电平
4.FFFF0H
5.逻辑地址、物理地址
6.物理地址
7.段基址、偏移地址、12345H
8.段寄存器、20
9.0000H:
0400H;
0020H:
0200H
10.1M
11.高8位、低8位
、单选题
1.
B
2.
3.
4.
A
5.
6.
C
7.
D
8.
9.
10.
11.
12.
13.
14.
15.
1.8086对存储器的管理为什么采用分段的办法?
最大段和最小段的存储空间分别是多大?
20位的物理地址是如何形成的?
8086CPU是一个16位的结构,内部寄存器及数据总线均为16位,16位地址只能寻址64KB空间。
无法送出外部所需的20位物理地址。
因此采用分段管理办法,来形成超过16位的存储
器物理地址,扩大对存储器的寻址范围(1MB,20位地址)。
最大段:
64KB最小段:
16B
当CPU访问内存时,段寄存器的内容(段基址)自动左移4位(二进制),与段内16位地址偏
移量相加,形成20位的物理地址。
2.简述8086CPU最小工作方式含义。
8086CPU的最小工作方式是指:
系统中只有一个微处理器,即8086CPU,该方式构成的为
单机系统,系统中所需要的控制信号全部由CPU提供,实现和存储器及I/O接口电路的连接,
无需总线控制器8288的参与。
3.说明逻辑地址和物理地址的含义,两者之间有何关系?
已知逻辑地址3000H:
2345H,写出
段地址、物理地址、偏移地址。
逻辑地址是在程序中对存储器地址的一种表示方法,由段地址和段内偏移地址两部分组成。
偏移地址是指段内某个存储单元相对该段首地址的差值,是一个16位的二进制代码。
物理地址是8086芯片引线送出的20位实际的地址码,用来指出一个特定的存储单元。
物理地址=段基址*10H+偏移地址
段地址3000H、偏移地址2345H、物理地址3000H*10H+2345H=32345H
4.计算题:
某微机系统中内存的首地址为3400H,末地址为67FFH,求其内存容量并以K表示。
内存容量=末地址—首地址+1=67FFH—3400H+1=3400H(字节)=13KB
5.8086/8088为什么采用地址/数据引线复用技术?
考虑到芯片成本,8086/8088采用40条引线的封装结构。
40条引线引出8086/8088的所有
信号是不够用的,采用地址/数据线复用引线方法可以解决这一矛盾,从逻辑角度,地址与数据
信号不会同时出现,二者可以分时复用同一组引线。
第六章8086/8088CPU寻址方式及指令系统
1.操作码、操作数
2.00FEH、1000H
3.最咼地址端
4.0FF2H、0056H
5.0214H、24514H、0306H、24306H
6.1、2000H
7.1
8.0FFH、00H
9.DX
4._
16.
17.
18.
19.
1.写出至少3种指令,使AX寄存器置零
MOVAX,00SUBAX,AXXORAX,AXANDAX,00H
2.用单条指令或程序片段,实现下述功能
名师整理___進秀资源—
⑴XORAX,OFFOOHORAX,000FH
(2)MOVCL,4RORAL,CL(或ROLAL,CL)
(3)XCHGAX,BX
3.堆栈存储区由哪两个寄存器管理?
简述数据压栈和弹栈的过程。
堆栈存储区由两个寄存器管理:
堆栈指针(SP和堆栈段寄存器(SS)。
当一个字数据被压入堆栈时,SP首先减2,然后对栈顶存储单元进行16位字的写操作;
其高8位数据被放在SP-1
单元中,低8位数据被放在SP-2单元中。
当数据从堆栈中弹出时,低8位从SP单元移出,高
8位从SP+1单元移出,然后SP+2。
4.举例说明与数据有关的寻址方式有哪些?
立即寻址、寄存器寻址、直接寻址、寄存器间接寻址、寄存器相对寻址、基址加变址寻址、
相对基址加变址寻址;
例子略。
5.输入输出的寻址方式有哪几种?
举例说明
有两种:
直接端口寻址,如INAL,05H;
间接端口寻址,如MOVDX,05HINAL,DX
6.答:
MOV旨令是将源操作数即内存单元的内容传送到目的操作寄存器中;
而LEA为取偏移
量指令,它是将源操作数所在内存单元的偏移地址取出送目的寄存器;
MOVAX,TABLE;
AX=3412H
LEAAX,TABLE;
AX=0020H
7.分别指出下列指令中的源操作数的寻址方式。
(1)直接寻址
(2)立即寻址
(3)寄存器寻址
(4)基址加变址
(5)相对基址加变址寻址
(6)寄存器相对寻址
(7)寄存器间接寻址
(8)段内间接寻址
(9)直接端口寻址
(10)间接端口寻址
8.指出下列指令的错误
(1)源、目的操作数长度不匹配
(2)立即数不能做目的操作数
(3)CS不能做目的操作数
(4)SI、DI不能同时出现在一个[]中
(5)源、目的操作数长度不匹配
(6)源、目的操作数不能均为存储器操作数
(7)立即数不能直接送至段寄存器
(8)IN指令中目的操作数不能用BL(只能用AL或AX)
(9)IP不能做目的操作数
(10)DX不能间接寻址,可改为MOVSI,[BX]
(11)PUSH旨令的操作数必须为16位(即:
按字操作)
9.设8086/8088CPU的SS=1050H,SP=0008H,AX=1234H,当执行指令:
PUSHAX后,寄
存器SS、SP、AX内容分别是什么?
画图说明1234H在内存中的存放情况。
SS=1050HSP=0006HAX=1234H
(10506H)=34H(10507H)=12H
10.假设(DS)=2000H,(BX)=1256H,(SI)=528FH;
位移量TABLE=20A1H,
(232F7H)=3280H,(264E5H)=2450H,则;
(1)IP=1256H
(2)IP=3280H
(3)IP=2450H
已知8086CPU各寄存器和有关内存单元内容如下:
指出执行下列指令后AX寄存器的内容:
第七章汇编语言程序设计
1.‘d'
2.第一个AND是逻辑指令,第二个AND是逻辑与操作符
3.OFFFFH
4.03H
5.同一代码段内、不同代码段
1.A2.A3.D4.B5.A
1.汇编语言中的伪指令与执行指令有何不同?
伪指令的功能主要用于完成变量定义、段定义等,变量名称后不能带‘:
’,它仅仅在汇编
过程中告诉汇编程序应如何汇编,而不生成机器代码,即由汇编程序进行处理;
执行指令可以
完成数据传送、各种运算、字符串处理、程序控制等功能,标号后要跟‘:
’,这种指令由汇编
程序翻译成对应的机器代码,最终由CPU执行处理。
2.试举例说明一条汇编语句可以有哪几部分组成?
各部分之间采用何种分隔符(定界符)相
隔离?
略。
3.指岀下面程序片段中的错误。
MYDATASEGMENT
ADB122434错误1:
多个操作数之间必须用“,”分开
B亠DW'
12'
错误2:
变量后面不能带冒号“:
”
MYDATAENDS
MYCODESEGMENT
ASSUMEDS:
MYDATACS:
MYCODE
MYDATA错误3:
立即数不能直接送进段寄存器
MOVAH
MOVAL
A
B
MOV
CX
MOVAX
MOVDS
MOVIP,B
错误4:
源、目的操作数字长不一致
错误5:
错误6:
MOV指令中IP不能做操作数
4.改正下面程序片段中的错误或指出错误原因。
DATASEGMENT
ADB12、24、34错误1:
多个操作数之间用“,”分开
BDW'
'
ABCD错误2:
'
ABCD改为’AB,'
CD
DATAENDS
CODESEGMENT
ASSUMEDSDATACS:
CODE
MOVDS,DATA
MOVDX_,OFFSETA
MOVAL,[DX+2]
MOVBL,CX
5.指出下面程序片段中的错误。
A1:
DB?
错误3:
错误4:
DX不能用于间接寻址,可改为BX
错误5:
错误6:
错误1:
变量后面不能带冒号
A2DW10
K1EQU1024
MOVAX,80
MOVK1,AX
错误2:
K1为立即数,不能做目的操作数
MOVAl,A2
错误3:
MOVBX,A1
MOVA1.K1
A1为字节变量,K1超出的范围
6.假设某程序段中的数据定义如下:
DA1
XX
01
00
DA2
32
25
DA3
(2)变量DA1、DA2、DA3占用字节数分别为:
6、2、1;
C0UNT=9表示数据段的长度为9个字节
7.假设某程序段中的数据定义如下:
A1占24个字节
A2占5个字节
A3占4个字节
L的值为33
L表示的意义:
变量A1、A2、A3所占的字节总数
8.对下面两个数据段,请分析偏移地址为10H和11H的两个字节中的数据是一样的吗?
为什
么?
不一样.分别是72H,04H和04H,72H.
因为字存储时低8位存放在低字节,高8位存在高字节。
9.若STR是字符串的首地址,指出下列程序的功能,并将语句加上注解。
LEABXSTR:
取STR的偏移量放到BX中
MOVCX,20:
设置循环次数
名师整理优秀资源
LP:
CMP[BX],‘*'
JNZNEXT
;
BX所指单元内容不为‘*'
,则转移至NEXT
MOV[BX],‘$'
将BX所指单元用‘$'
替代
NEXTINCBX
BX加1,指向下一个单兀
LOOPLP
CX-1不等于0则转移至LP处,继续循环
HLT
程序的功能:
将STR开始的前
20个字符中的‘*'
用‘$'
填入适当指令或指令的一部分,元成指疋功能。
MAX:
MOVBX,
2000H
M0VAL,
[BX]
M0VCX,
63H(或99)
LOOP1INCBX
CMPAL,
JAELOOP2
MOVAL,
LOOP2DECCX
JNZLOOP1
M0V[2100H],AL
指出下列程序的功能,并将有分号
(;
)的语句加上简要注解
BUFDB100DUP⑺
MOVBXOFFSETBUF;
取BUF的偏移地址,设置地址指针BX
MOVCL64H
MOVBYTEPTR[BX],0;
将BX所指向的内存单元清0
INCBX;
BX内容加1,指向下一个内存单元
DECCL;
CL内容减1
JNZLP;
若计数器CL的内容不为0则转向LP继续循环
将BUF单元开始的100个字节的存储单元全部清0
12.分析填空
MOVBL,09H
执行后BL=
09H
MOVAL,05H
执行后AL=
05H
ADDAL,BL
0EH
DAA
14H
BL=
分析填空
MOVAX,00H
执行后
AX=00H
PUSHAX
POPBX
BX=00H
MOVAX3F5FH
AL=5FH
MOVCX4
RORAL,CL
AL=0F5H
ANDAL,0FH
AL=05H
假设(BL)=0E3H,变量
VALUE中存放的内容79H,确定下列各条指令单独执行后的结果。
(1)BL=9AH
(2)BL=FBH
(3)BL=1CH
(4)BL=00H
(5)BL=C6H15•阅读程序回答问题
(1)该程序的功能是计算BLOCK数据元素中奇数的个数,并存入RESUL冲
(2)程序执行后,RESULT^元的内容是5(奇数的个数)。
(3)第3行汇编后COUNT=10(BLOCK数组元素的个数。
(4)*处的完整指令应是MOVAX,DATA。
处的完整指令应是MOVSI,OFFSETBLOCK,该指令也可以用LEASI,BOLCK
指令代替
四、程序设计题
1.内存中有X、Y两个数:
X=32,Y=-78利用汇编语言编写完整的程序,计算这两个数之和,
并将结果存入内存S,即:
S=X+Y
参考程序:
XDB32
YDB-78
SDB?
ASSUMECS:
CODEDS:
DATA
STARTMOVAXDATA
MOVDS,AX
MOVALX
ADDAL,Y
MOVSAL
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
2.编程检测从外设端口71H输入的字节数据,若该数据W20,则向73H端口送0H;
若该数
据>20,则向73H端口送0FFH。
请写出完整的汇编源程序。
参考程序如下所示:
ASSUMECS
CODE
START:
INAL,71H
CMPAL,20
JNGK1
MOVAL,OFFH
JMPK2
K1:
MOVAL00H
K2:
OUT73HAL
MOVAH,4CH
3.编程检测80H端口输入的字节数据,若为正,将BL清0;
若为负,将BL置为FFH。
请
写出完整的汇编源程序。
INAL,
80H
TESTAL
,80H
JZAPOS
MOVBL
,0FFH
JMPEXIT
APOS:
MOVBL00H
EXIT:
MOVAH4CH
4.内存中有X、Y两个数组:
X=32、-43、76,Y=-78、127、-128利用汇编语言编写完整的程
序,计算这两个数组之和,即S(i)=X(i)+Y(i)
XDB32,-43,76
YDB-78,127,-128
SDB3DUP(0)
MOVBX,00H
MOVCX,
3
AGAINMOVAL
X[BX]
ADDAL,
Y[BX]
MOVS[BX]
,AL
INCBX
LOOPAGAIN
MOVAH,
4CH
5.在BLOCK始有一个字节型数组,共有15个元素,利用汇编语言编写完整的程序,计算这
个数组中奇数的个数,并将结果存入内存SUM单元。
BLOCKDB15DUP(?
)
SUMDB00
MOVAXDATA
MOVDS,AX
MOVCX,15
CON:
MOVAL,[SI]
TESTAL,01H
JZNEXT
INCSUM
NEXT:
INCSI
LOOPCON
MOVAH4CH
6.在BUF开始有一个字节型数组,共有50个元素,利用汇编语言编写完整的程序,将该数组全部元素清零。
BUFDB50DUP(?
MOVAX,DATA
DS
AX
SI
OFFSETBUF
50
CON
[SI]
,OOH
INCSI
7.在BUF开始有一个字节型数组,共有100个元素,利用汇编语言编写完整的程序,