微机接口答案.docx
《微机接口答案.docx》由会员分享,可在线阅读,更多相关《微机接口答案.docx(16页珍藏版)》请在冰豆网上搜索。
![微机接口答案.docx](https://file1.bdocx.com/fileroot1/2023-1/9/6b6a9540-78ac-4582-9f7a-aaa40499626b/6b6a9540-78ac-4582-9f7a-aaa40499626b1.gif)
微机接口答案
AA-―-皿
弟二早
1•分别说明下列指令的源操作数和目的操作数各采用什么寻址方式。
(1)MOVAX,2408H
(2)MOVCL,OFFH(3)MOVBX,[SI]
(4)MOV5[BX],BL(5)MOV[BP+1OOH],AX(6)MOV[BX+DI],'$'
(7)MOVDX,ES:
[BX+SI](8)MOVVAL[BP+DI],DX
(9)INAL,05H(10)MOVDS,AX答:
(1)立即数,寄存器
(2)立即数,寄存器(3)寄存器间接,寄
存器
(4)寄存器,寄存器相对(5)寄存器,寄存器相对(6)立即数,基址变址
(7)基址变址,寄存器(8)寄存器,相对基址变址
(9)直接端口寻址,寄存器(10)寄存器,寄存器
2.已知:
DS=1000HBX=0200HSI=02H,内存10200HH10205H单元的内容分别为10H,
2AH,3CH46H,59H,6BH下列每条指令执行完后AX寄存器的内容各是什么?
(1)MOVAX,0200H
(2)MOVAX,[200H](3)MOVAX,BX
(4)MOVAX,3[BX](5)MOVAX,[BX+SI](6)MOVAX,2[BX+SI]
答:
(1)0200H
(2)2A10H(3)0200H
(4)5946H(5)463CH(6)6B59H
3.设DS=1000H,ES=2000H,SS=3500H,SI=OOAOH,DI二0024H,BX=0100H,BP二0200H,数据段中变量名为VAL的
偏移地址值为0030H,试说明下列源操作数字段的寻址方式是什么?
物理地址值是多少?
(1)MOVAX,[100H]
(2)MOVAX,VAL(3)MOVAX,[BX]
(4)MOVAX,ES:
[BX](5)MOVAX,[SI](6)MOVAX,[BX+10H]
(7)MOVAX,[BP](8)MOVAX,VAL[BP][SI]
(9)MOVAX,VAL[BX][DI](10)MOVAX,[BP][DI]
答:
(1)直接,10100H
(2)直接,10030H(3)寄存器间接,10100H
(4)寄存器间接,20100H(5)寄存器间接,100A0H(6)寄存器相对,10110H
(7)寄存器间接,35200H(8)相对基址变址,352D0H
(9)相对基址变址,10154H(10)基址变址,35224H
4.写出下列指令的机器码
(1)MOVAL,CL
(2)MOVDX,CX(3)MOV[BX+100H],3150H
答:
(1)1000101011000001B
(2)1000101111010001B
(3)110001111000011100000000000000010101000000110001B
5.已知程序的数据段为:
DATASEGMENT
ADB錦,,10H
BDBCDW1234H,OFFH
DDB5DUP(?
)
EDD1200459AH
DATAENDS求下列程序段执行后的结果是什么。
MOVAL,A
MOVDX,C
XCHGDL,A
MOVBX,OFFSETB
MOVCX,3[BX]
LEABX,D
LDSSI,E
LESDI,E
答:
MOVAL,AAL=24H
MOVDX,CDX=1234H
XCHGDL,ADL=24H,A=34H
MOVBX,OFFSETBBX=2
MOVCX,3[BX]CX=5550H
LEABX,DBX=OOOEH
LDSSI,EDS二1200H,SI=459AH
LESDI,EES=1200H,DI=459AH
6.指出下列指令中哪些是错误的,错在什么地方。
(1)MOVDL,AX
(2)MOV8650H,AX(3)MOVDS,0200H
(4)MOV[BX],[1200H](5)MOVIP,OFFH(6)MOV
[BX+SI+3],IP
(7)MOVAX,[BX][BP](8)MOVAL,ES:
[BP](9)MOVDL,[SI][D叮
(10)MOVAX,0FFSET0A20H(11)MOVAL,OFFSETABLE
(12)XCHGAL,50H(13)INBL,05H(14)OUTAL,OFFEH
答:
(1)长度不匹配
(2)立即数不能做目的操作数
(3)段寄存器不能用立即数赋值(4)两个内存单元
不能直接传送数据
(5)IP不能用指令直接修改(6)指令中不能出现IP
(7)BX/BP应与SI/DI搭配(8)正确
(9)SI/DI应与BX/BP搭配(10)OFFSET后应跟内存单元
(11)偏移地址为16位,AL长度不够(12)立即数不能用于XCHG
(13)IN必须用AL/AX(14)操作数顺序反向;地址应
为8位
7.已知当前数据段
中有一个十进制数字0〜9的7段
代码表,其数值依次为40H,79H,24H,
30H,19H,12H,02H,78H,OOH,18H。
要求用XLAT指令将十进制数57转换成相应的
7段代码值,存到BX寄存器中,试写出相应的程序段。
答:
DATASEGMENT
TABLEDB40H,79H,24H,30H,19H,12H,02H,
78H,OOH,18H
DATAENDS
MOVAL,5MOVBX,OFFSETTABLE
XLATTABLEMOVCL,AL
MOVAL,7
XLATTABLE
MOVBL,AL
MOVBH,CL
8.已知当前SS=1050H,SP=O1OOH,AX=4860H,BX=1287H,试用示意图表示执行下列指
令过程中,堆栈中的内容和堆栈指针SP是怎样变化的。
PUSHAX
PUSHBX
POPBX
POPAX
E(l)摘寺AUr恥
<2>执打AXJg
C3)PUSHBXJ6
<4)tKf?
POPBX后
⑴指
9.下列指令完成什么功能?
(1)ADDAL,DH
(2)ADCBX,
CX(3)SUBAX2710H
(4)DECBX
(5)NEGCX(6)INCBL
(7)MULBX(8)DIVCL
答:
d)AL+DIH^AL
(2)BX+CX+CRBX(3)AX-2710H—AX
4)BX-1—BX(5)0-CX—CX(6)BL+1
(7)AX*B〃DXAX(8)AX/CL商一AL,余数一AH
10.已知AX=2508HBX=0F36HCX=0004HDX=1864H求下列每条指令执行后的结果
是什么?
标志位CF等于什么?
(1)ANDAHCL
(2)ORBL,30H(3)NOTAX
(4)XORCXOFFFOH(5)TESTDH,OFH(6)CMPCX,OOH
(7)SHRDXCL(8)SARAL,1(9)SHLBHCL(10)SAL
AX,1(11)RCLBX,1(12)RORDX,CL
答:
(1)AX=0408HCF=O
(2)BX=0F36HCF=O
(3)AX=0DAF7HCF不变⑷CX=0FFF4HCF=O
(5)DX=01864HCF=O(6)CX=0004HCF=O
(7)DX=0186H,CF=O(8)AX二2504H,CF=O
(9)BX=0F036H,CF=O(10)AX二4A10H,CF=O
(11)BX=1E6C/1E6DH,CF=O(12)DX二4186H,CF=O
11.假设数据段定义如下:
DATASEGMENT
STRINGDB"ThePersonalComputer&TV,
DATAENDS
试用字符串操作等指令编程完成以下功能:
(1)把该字符串传送到附加段中偏移量为GET_CHAR开始的内存单元中。
(2)比较该字符串是否与’heComputer相同,若相同则将AL寄存器的内容置1,否则置
Oo并要求将比较次数送到BL寄存器中。
(3)检查该字符串是否有若有则用空格字符将其替换。
(4)把字符串大写字母传送到附加段中以CAPS开始
的单元中,其余字符传到以CHART
开始的单元中。
然后将数据段中存储上述字符串的单元清
0O
答:
(1)CLD
LEASI,STRING
LEADI,GET_CHAR
MOVCX,26
REPMOVSB
(2)补充在附加段定义
STRING1DB"Thecomputer'
MOVAL,1
CLD
LEASI,STRING
LEADI,STRING1
MOVCX,12
REPZCMPSB
JZSKIP
MOVAL,0
SKIP:
MOVBX,12
SUBBX,CX
(3)MOVAX,DATA
MOVES,AX
CLD
MOVAL,'&'
LEADI,STRING
MOVCX,26
NEXT:
REPNESCASB
JZFIND
JMPEXIT
FIND:
MOVBYTEPTR[DI-1],''
JCXZEXIT
JMPNEXT
EXIT:
(4)LEASI,STRING
LEADI,CAPS
LEABX,CHART
MOVCX,26
NEXT:
MOVAL,[SI]
CMPAL,'A'
JBOTHER
CMPAL,'Z,
JAOTHER
MOVES:
[D叮,AL
INCDI
JMPSKIP
OTHER:
MOVES:
[BX],AL
INCBX
SKIP:
MOVBYTEPTR[SI],0
INCSI
LOOPNEXT
12.
AX中的内容不
编程将AX寄存器中的内容以相反的顺序传送到DX寄存器中,并要求被破坏,然后统计DX寄存器中'1'的个数是多少。
答:
:
MOVBL,0
PUSHAX
MOVDX,0
MOVCX,16
NEXT:
SHLAX,1
JNCSKIP
INCBL
SKIP:
RCRDX,1
LOOPNEXT
STOP:
POPAX
13.设CS=1200HIP二O1OOH,SS=5000HSP二0400HDS=2000HSI=3000H,BX=0300H(20300H)=4800H,(20302H)
=OOFFHTABLE=0500HPROG_N标号的地址为1200:
0278H,PROG_F标号的地址为3400H:
OABCH说明下列每条指令执行完后,程序将分别转移到何处执行?
(1)
JMP
PROG_N
2)
JMP
BX
3)
JMP
[BX1
(4)
JMP
FARPROG_F
(5)
JN1P
DWORDPTR[BX]
如将上述指令中的操作码JMP改成CALL,则每条指令执行完后,程序转向何处执行?
并请画图说明堆栈中的内容和堆栈指针如何变化。
答:
(1)1200H:
0278H
(2)1200H:
0300H
3)1200H:
4800H
(4)3400H:
OABCH
5)00FFH:
4800H
将操作码JMP改成CALL后:
(1)1200H:
0278H
指令长度为3,贝UIP二0100H+3二0103H,入栈
C1>1200H:
0C17EH
扌H•争民廈角3”n01004-3-0103H.人程
指令长度为2,贝IJIP二0100H+2二0102H,入栈
5000H.(W00H
5000H.O3FCH
5OOOH-03FEH
a04QQH
14.在下列程序段括号中分别填入以下指令LOOPNENEXT
(1)LOOPNEXT
(2)LOOPENEXT(3)试说明AXBX,CX,DX的内容分别是什么在这三种情况下,程序段执行完后,
START:
MOVAX,O1H
MOVBX,02H
MOVDX,03H
MOVCX,04H
NEXT:
INCAX
ADDBX,AX
SHRDX,1
()
答:
(1)AX=05HBX=1OHCX=ODX=O
(2)AX=02HBX=04HCX=03HDX=O1H
(3)AX=03HBX=O7HCX=02HDX=O
15.某班有7个同学英语成绩低于80分,分数存在ARRAY数组中,试编程完成以下工作:
(1)给每人加5分,结果存到NEW数组中
(2)把总分存到SUM单元中
答:
DATASEGMENT
ARRAYDB?
?
?
?
?
?
?
NEWDB7DUP(?
)
SUMDW0
DATAENDS
MOVAX,DATA
MOVDS,AX
(1)LEASI,ARRAY
LEADI,NEW
MOVCX,7
NEXT:
MOVAL,[SI]
ADDAL,5
MOV[DI],AL
INCSI
INCDI
LOOPNEXT
(2)LEASI,ARRAY
CLC
SP
5000H:
0000H
5000H:
03FCH
5000H:
03FEH
5000H:
0400H
MOVCX,
7
NEXT1:
MOVAL,[SI]
MOVAH,0
ADCSUM,AX
INCSI
LOOPNEXT1
16.中断向量表的作用是什么?
它放在内存的什么区域内?
中断向量表中的什么地址用于类型3的中断?
答:
中断向量表用来存放中断服务程序的入口地址。
8086的256类中断的入口地址要占用
1K字节,位于内存OOOOOHH003FFH的区域内。
中断向量表中OOOOCHHOOOOFH用于类型3的中断。
17.设类型2的中断服务程序的起始地址为0485:
0016H,它在中断向量表中如何存放?
答:
物理地址内容
00008H16H
00009H00H
OOOOAH85H
OOOOBH04H
18.若中断向量表中地址为0040H中存放240BH,0042H单元里存放的是D169H试问:
(1)这些单元对应的中断类型是什么?
(2)该中断服务程序的起始地址是什么?
答:
(1)10H
(2)D169H:
240BH
19.简要说明8086响应类型0〜4中断的条件是什么?
答:
类型0:
除法错中断
执行除法指令时,若除数为0或所得商超过寄存器能容纳的范围,则自动产生类型0中断。
类型1:
单步中断
若CPU的单步标志TF二1,则每执行完一条指令后,自动产生类型1中断。
类型2:
不可屏蔽中断NMI
当8086的NMI引脚上接收到由低变高的电平变化时,将自动产生类型2中断。
类型3:
断点中断若在程序中某位置设置断点,当程序执行到该断点时,则产生类型3中断。
类型4:
溢出中断
若溢出标志0F二1,则可由溢出中断指令INTO产生类型4中断。
第四章
1.下列变量各占多少字节?
AlDW23H,5876H
A2DB3DUP(?
),OAH,ODH,'$'
A3DD5DUP(1234H,567890H)
A4DB4DUP(3DUP(1,2,'ABC'))
答:
A1占4个字节
A2占6个字节
A3占40个字节
A4占60个字节
2.下列指令完成什么功能?
MOVAX,OOFFHAND1122H+3344H
MOVAL,15GEU11B
MOVAX,OOFFHLE255+6/5
ANDAL,50MOD4
ORAX,OFOOFHAND1234OROOFFH
答:
(1)将0066H传送给AX
(2)将OFFH传送给AL
(3)将OFFFFH传送给AX
(4)ANDAL,02H
(5)ORAX,OOFFH
3.有符号定义语句如下:
BUFDB3,4,5,'123'
ABUFDB0
LEQUABUF-BUF求L的值为多少?
答:
L=6
4.假设程序中的数据定义如下:
PARDW?
PNAMEDB16DUP(?
)
COUNTDD?
PLENTHEQU$-PAR
求PLENTH的值为多少?
表示什么意义?
答:
PAR的偏移地址为0,PLENTH当前偏移地址$=2+16+4=22,$-PAR二22,故PLENTH的值为22。
若在PLENTH所在行有变量定义,则$表示该变量的偏移地址,即$表示PLENTH所在行的当前偏移地址。
故PLENTH表示从当前行到PAR之间定义的变量所占的字节个数。
5.对于下面的数据定义,各条MOV指令执行后,有关寄存器的内容是什么?
DAIDB?
DA2DW10DUP(?
)
DA3DB'ABCD'
MOVAX,TYPEDAI
MOVBX,SIZEDA2
MOVCX,LENGTHDA3
答:
AX=1,BX=20,CX=1
6.下段程序完成后,AH等于什么?
INAL,5FH
TESTAL,80H
JZLI
MOVAH,0
JMPSTOP
LI:
MOVAH,OFFH
STOP:
HLT
答:
讨论从端口5FH输入的数据最高位的情况。
若最高位为1,则AH二0若最高位为0,
则AH=0FFHo
7.编程序完成下列功能:
(1)利用中断调用产生5秒延时。
(2)利用中断调用,在屏幕上显示1〜9之间随机数。
答:
(1)可以利用中断类型1CH来处理,因为在系统时钟的中断处理程序中,时钟中断一次要调用一次INT1CH,即每隔55ms,产生一次1CH中断,要产生5秒延时,只要中断5s/55ms=91次即可。
又因1CH中断处理程序中只有一条IRET指令,故可将用户的程序代替原有的INT1CH程序。
DATASEGMENT
COUNTDW91;计数器
MESSDB'5sdelayed!
J,OAH,ODH,'$'
DATAENDS
CODESEGMENT
MAINPROCFAR
ASSUMECS:
CODE,DS:
DATA,ES:
DATA
START:
PUSHDS
MOVAX,0
PUSHAX
MOVAX,DATA
MOVDS,AX
MOVAL,1CH;得到原中断向量
MOVAH,35H
INT21H
PUSHES:
存储原中断向量
PUSHBX
PUSHDS
MOVDX,OFFSETDELAYDELAY的偏移地址和段地址
MOVAX,SEGDELAY
MOVDS,AX
MOVAL,1CH;设置中断向量
MOVAH,25H
INT21H
POPDS
INAL,21H;设置中断屏蔽位
ANDAL,OFEH
OUT21H,AL
STI
MOVDI,2000H:
主程序延迟,在执行此段程序期间
Al:
MOVSI,3000H;产生中断
A2:
DECSI
JNZA2
DECDI
JNZAl
POPDX;取原中断向量
POPDS
MOVAL,1CH