微机接口答案讲解.docx
《微机接口答案讲解.docx》由会员分享,可在线阅读,更多相关《微机接口答案讲解.docx(93页珍藏版)》请在冰豆网上搜索。
![微机接口答案讲解.docx](https://file1.bdocx.com/fileroot1/2022-10/11/6b5be1d8-95cd-4b6a-8342-6fe59107a148/6b5be1d8-95cd-4b6a-8342-6fe59107a1481.gif)
微机接口答案讲解
第三章
1.分别说明下列指令的源操作数和目的操作数各采用什么寻址方式。
(1)MOVAX,2408H
(2)MOVCL,0FFH(3)MOVBX,[SI]
(4)MOV5[BX],BL(5)MOV[BP+100H],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=1000H,BX=0200H,SI=02H,内存10200H~10205H单元的内容分别为10H,
2AH,3CH,46H,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=00A0H,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
BDB‘COMPUTER’
CDW1234H,0FFH
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=000EH
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,0FFH(6)MOV[BX+SI+3],IP
(7)MOVAX,[BX][BP](8)MOVAL,ES:
[BP](9)MOVDL,[SI][DI]
(10)MOVAX,OFFSET0A20H(11)MOVAL,OFFSETTABLE
(12)XCHGAL,50H(13)INBL,05H(14)OUTAL,0FFEH
答:
(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,00H,18H。
要求用XLAT指令将十进制数57转换成相应的
7段代码值,存到BX寄存器中,试写出相应的程序段。
答:
DATASEGMENT
TABLEDB40H,79H,24H,30H,19H,12H,02H,78H,00H,18H
DATAENDS
……
MOVAL,5
MOVBX,OFFSETTABLE
XLATTABLE
MOVCL,AL
MOVAL,7
XLATTABLE
MOVBL,AL
MOVBH,CL
8.已知当前SS=1050H,SP=0100H,AX=4860H,BX=1287H,试用示意图表示执行下列指
令过程中,堆栈中的内容和堆栈指针SP是怎样变化的。
PUSHAX
PUSHBX
POPBX
POPAX
(1)指
9.下列指令完成什么功能?
(1)ADDAL,DH
(2)ADCBX,CX(3)SUBAX,2710H
(4)DECBX(5)NEGCX(6)INCBL
(7)MULBX(8)DIVCL
答:
(1)AL+DH→AL
(2)BX+CX+CF→BX(3)AX-2710H→AX
(__________4)BX-1→BX(5)0-CX→CX(6)BL+1→BL
(7)AX*BX→DX,AX(8)AX/CL商→AL,余数→AH
10.已知AX=2508H,BX=0F36H,CX=0004H,DX=1864H,求下列每条指令执行后的结果
是什么?
标志位CF等于什么?
(1)ANDAH,CL
(2)ORBL,30H(3)NOTAX
(4)XORCX,0FFF0H(5)TESTDH,0FH(6)CMPCX,00H
(7)SHRDX,CL(8)SARAL,1(9)SHLBH,CL
(10)SALAX,1(11)RCLBX,1(12)RORDX,CL
答:
(1)AX=0408H,CF=0
(2)BX=0F36H,CF=0
(3)AX=0DAF7H,CF不变(4)CX=0FFF4H,CF=0
(5)DX=01864H,CF=0(6)CX=0004H,CF=0
(7)DX=0186H,CF=0(8)AX=2504H,CF=0
(9)BX=0F036H,CF=0(10)AX=4A10H,CF=0
(11)BX=1E6C/1E6DH,CF=0(12)DX=4186H,CF=0
11.假设数据段定义如下:
DATASEGMENT
STRINGDB‘ThePersonalComputer&TV’
DATAENDS
试用字符串操作等指令编程完成以下功能:
(1)把该字符串传送到附加段中偏移量为GET_CHAR开始的内存单元中。
(2)比较该字符串是否与’TheComputer’相同,若相同则将AL寄存器的内容置1,否则置
0。
并要求将比较次数送到BL寄存器中。
(3)检查该字符串是否有’&’,若有则用空格字符将其替换。
(4)把字符串大写字母传送到附加段中以CAPS开始的单元中,其余字符传到以CHART
开始的单元中。
然后将数据段中存储上述字符串的单元清0。
答:
(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:
[DI],AL
INCDI
JMPSKIP
OTHER:
MOVES:
[BX],AL
INCBX
SKIP:
MOVBYTEPTR[SI],0
INCSI
LOOPNEXT
12.编程将AX寄存器中的内容以相反的顺序传送到DX寄存器中,并要求AX中的内容不
被破坏,然后统计DX寄存器中‘1’的个数是多少。
答:
:
MOVBL,0
PUSHAX
MOVDX,0
MOVCX,16
NEXT:
SHLAX,1
JNCSKIP
INCBL
SKIP:
RCRDX,1
LOOPNEXT
STOP:
POPAX
13.设CS=1200H,IP=0100H,SS=5000H,SP=0400H,DS=2000H,SI=3000H,BX=0300H,
(20300H)=4800H,(20302H)=00FFH,TABLE=0500H,PROG_N标号的地址为1200:
0278H,PROG_F标号的地址为3400H:
0ABCH。
说明下列每条指令执行完后,程序将分别
转移到何处执行?
(1)JMPPROG_N
(2)JMPBX
(3)JMP[BX]
(4)JMPFARPROG_F
(5)JMPDWORDPTR[BX]
如将上述指令中的操作码JMP改成CALL,则每条指令执行完后,程序转向何处执行?
并
请画图说明堆栈中的内容和堆栈指针如何变化。
答:
(1)1200H:
0278H
(2)1200H:
0300H
(3)1200H:
4800H
(4)3400H:
0ABCH
(5)00FFH:
4800H
将操作码JMP改成CALL后:
(1)1200H:
0278H
指令长度为3,则IP=0100H+3=0103H,入栈
(5)00FFH:
4800H
指令长度为2,