微机接口答案文档格式.docx
《微机接口答案文档格式.docx》由会员分享,可在线阅读,更多相关《微机接口答案文档格式.docx(91页珍藏版)》请在冰豆网上搜索。
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
……
MOVAL,5
MOVBX,OFFSETTABLE
XLATTABLE
MOVCL,AL
MOVAL,7
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.假设数据段定义如下:
STRINGDB‘ThePersonalComputer&
TV’
试用字符串操作等指令编程完成以下功能:
(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
LEADI,STRING1
MOVCX,12
REPZCMPSB
JZSKIP
MOVAL,0
SKIP:
MOVBX,12
SUBBX,CX
(3)MOVAX,DATA
MOVES,AX
MOVAL,'
&
'
LEADI,STRING
NEXT:
REPNESCASB
JZFIND
JMPEXIT
FIND:
MOVBYTEPTR[DI-1],'
'
JCXZEXIT
JMPNEXT
EXIT:
(4)LEASI,STRING
LEADI,CAPS
LEABX,CHART
MOVAL,[SI]
CMPAL,’A’
JBOTHER
CMPAL,’Z’
JAOTHER
MOVES:
[DI],AL
INCDI
JMPSKIP
OTHER:
MOVES:
[BX],AL
INCBX
MOVBYTEPTR[SI],0
INCSI
LOOPNEXT
12.编程将AX寄存器中的内容以相反的顺序传送到DX寄存器中,并要求AX中的内容不
被破坏,然后统计DX寄存器中‘1’的个数是多少。
:
MOVBL,0
MOVDX,0
MOVCX,16
SHLAX,1
JNCSKIP
INCBL
RCRDX,1
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:
将操作码JMP改成CALL后:
指令长度为3,则IP=0100H+3=0103H,入栈
指令长度为2,则IP=0100H+2=0102H,入栈
14.在下列程序段括号中分别填入以下指令
(1)LOOPNEXT
(2)LOOPENEXT(3)LOOPNENEXT
试说明在这三种情况下,程序段执行完后,AX,BX,CX,DX的内容分别是什么。
START:
MOVAX,01H
MOVBX,02H
MOVDX,03H
MOVCX,04H
INCAX
ADDBX,AX
SHRDX,1
()
(1)AX=05HBX=10HCX=0DX=0
(2)AX=02HBX=04HCX=03HDX=01H
(3)AX=03HBX=07HCX=02HDX=0
15.某班有7个同学英语成绩低于80分,分数存在ARRAY数组中,试编程完成以下工作:
(1)给每人加5分,结果存到NEW数组中
(2)把总分存到SUM单元中
ARRAYDB,,,,,,
NEWDB7DUP()
SUMDW0
MOVAX,DATA
MOVDS,AX
(1)LEASI,ARRAY
LEADI,NEW
MOVCX,7
MOVAL,[SI]
ADDAL,5
MOV[DI],AL
(2)LEASI,ARRAY
CLC
SP
5000H:
0000H
03FCH
03FEH
0400H
MOVCX,7
NEXT1:
MOVAL,[SI]
MOVAH,0
ADCSUM,AX
LOOPNEXT1
16.中断向量表的作用是什么它放在内存的什么区域内中断向量表中的什么地址用于
类型3的中断
中断向量表用来存放中断服务程序的入口地址。
8086的256类中断的入口地址要占用
1K字节,位于内存00000H~003FFH的区域内。
中断向量表中0000CH~0000FH用于类型
3的中断。
17.设类型2的中断服务程序的起始地址为0485:
0016H,它在中断向量表中如何存放
物理地址内容
00008H16H
00009H00H
0000AH85H
0000BH04H
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:
溢出中断
若溢出标志OF=1,则可由溢出中断指令INTO产生类型4中断。
第四章
1.下列变量各占多少字节
A1DW23H,5876H
A2DB3DUP(),0AH,0DH,‘$’
A3DD5DUP(1234H,567890H)
A4DB4DUP(3DUP(1,2,’ABC’))
A1占4个字节
A2占6个字节
A3占40个字节
A4占60个字节
2.下列指令完成什么功能
MOVAX,00FFHAND1122H+3344H
MOVAL,15GE1111B
MOVAX,00FFHLE255+6/5
ANDAL,50MOD4
ORAX,0F00FHAND1234OR00FFH
(1)将0066H传送给AX
(2)将0FFH传送给AL
(3)将0FFFFH传送给AX
(4)ANDAL,02H
(5)ORAX,00FFH
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指令执行后,有关寄存器的内容是什么
DA1DB
DA2DW10DUP()
DA3DB‘ABCD’
MOVAX,TYPEDA1
MOVBX,SIZEDA2
MOVCX,LENGTHDA3
AX=1,BX=20,CX=1
6.下段程序完成后,AH等于什么
INAL,5FH
TESTAL,80H
JZL1
JMPSTOP
L1:
MOVAH,0FFH
HLT
讨论从端口5FH输入的数据最高位的情况。
若最高位为1,则AH=0;
若最高位为0,
则AH=0FFH。
7.编程序完成下列功能:
(1)利用中断调用产生5秒延时。
(2)利用中断调用,在屏幕上显示1~9之间随机数。
(1)可以利用中断类型1CH来处理,因为在系统时钟的中断处理程序中,时钟中断一
次要调用一次INT1CH,即每隔55ms,产生一次1CH中断,要产生5秒延时,只要中断
5s/55ms=91次即可。
又因1CH中断处理程序中只有一条IRET指令,故可将用户的程序代
替原有的INT1CH程序。
COUNTDW91;
计数器
MESSDB‘5sdelayed!
’,0AH,0DH,’$’
CODESEGMENT
MAINPROCFAR
ASSUMECS:
CODE,DS:
DATA,ES:
DATA
PUSHDS
MOVAX,0
MOVAX,DATA
MOVDS,AX
MOVAL,1CH;
得到原中断向量
MOVAH,35H
INT21H
PUSHES;
存储原中断向量
PUSHDS
MOVDX,OFFSETDELAY;
DELAY的偏移地址和段地址
MOVAX,SEGDELAY
MOVAL,1CH;
设置中断向量
MOVAH,25H
POPDS
INAL,21H;
设置中断屏蔽位
ANDAL,0FEH
OUT21H,AL
STI
MOVDI,2000H;
主程序延迟,在执行此段程序期间
A1:
MOVSI,3000H;
产生中断
A2:
DECSI
JNZA2
DECDI
JNZA1
POPDX;
取原中断向量
MOVAL,1CH
RET
MAINENDP
DELAYPROCNEAR
PUSHCX
PUSHDX
DECCOUNT;
5秒计数
JNZEXIT
MOVDX,OFFSETMESS;
显示信息
MOVAH,09H
MOVCOUNT,91;
5秒的值
CLI
POPDX
POPCX
IRET
DELAYENDP
CODEENDS
ENDSTART
(2)可以利用INT1AH,读取当前时间的1/100秒为随机数。
CODE
START:
MOVAH,0
INT1AH;
读取当前时间CH:
CL=时:
分
MOVAL,DL;
DH:
DL=秒:
1/100秒
MOVBL,9
DIVBL
INCAH
MOVDL,AH
ADDDL,30H
MOVAH,2
MOVAH,4CH
8.编两个通过过程完成将AX中存放的二进制数转换成压缩型BCD码以及将BCD码转换
成二进制数。
(1)将AX中的二进制数先后除以1000,100和10,每次除法所得的商,即是BCD数
的千位、百位和十位数,余数是个位数。
子程序名:
B2TOBCD
输入参数:
AX=十六位二进制数
输出参数:
CF=0,则AX=4位压缩型BCD码。
CF=1,则要转换的数大于9999,AX不
变。
使用寄存器:
CX:
存放除数,DX:
存放中间结果。
B2TOBCDPROCFAR
CMPAX,9999;
AX>
9999,则CF置1
JBETRAN
STC
TRAN:
PUSHCX
SUBDX,DX;
DX清0
MOVCX,1000;
计算千位数
DIVCX
XCHGAX,DX;
商在DX中,余数在AX中
MOVCL,4
SHLDX,CL;
DX左移4位
MOVCL,100;
计算百位数
DIVCL
ADDDL,AL;
百位数加到DL中,DX左移4位
SHLDX,CL
XCHGAL,AH;
余数保留在AL中
SUBAH,AH
MOVCL,10;
计算十位数
十位数加到DL中,DX左移4位
ADDDL,AH;
加个位数
MOVAX,DX;
结果送到AX中
RET
B2TOBCDENDP
(2)将AX中4位BCD码顺序乘以1000,100,10和1,然后求和即得。
BCDTOB2
AX=4位压缩BCD码
BX:
暂存数据,CX:
存放乘数,DX:
存放中间结果
BCDTOB2PROCFAR
MOVBX,AX
ROLAX,CL
ANDAX,000FH
乘以1000
MULCX
MOVDX,AX
MOVAX,BX
MOVCL,8
乘以100
MULCL
ADDDX,AX
SHRAX,CL
乘以10
ANDBX,000FH
ADDDX,BX
MOVAX,DX
BCDTOB2ENDP
9.编写两个通用过程,一个完成ASCII码转换成二进制数功能,另一个完成ASCII字符显
示输出功能。