1、微机接口答案第三章1. 分别说明下列指令的源操作数和目的操作数各采用什么寻址方式。( 1)MOV AX,2408H (2)MOV CL, 0FFH ( 3)MOV BX,SI( 4)MOV 5BX, BL (5)MOV BP+100H, AX (6)MOV BX+DI, $( 7)MOV DX,ES:BX+SI (8)MOV VALBP+DI,DX(9)IN AL ,05H (10)MOV DS,AX 答:( 1)立即数,寄存器 ( 2)立即数,寄存器 (3)寄存器间接,寄存器( 4)寄存器,寄存器相对 ( 5)寄存器,寄存器相对 (6)立即数,基址变址( 7)基址变址,寄存器 (8)寄存器,
2、相对基址变址( 9)直接端口寻址,寄存器 (10)寄存器,寄存器2. 已知:DS=1000H BX=0200H SI=02H,内存 10200HH 10205H 单元的内容分别为 10H,2AH, 3CH 46H, 59H, 6BH下列每条指令执行完后 AX寄存器的内容各是什么?(1)MOV AX,0200H (2)MOV AX,200H ( 3) MOV AX,BX(4)MOV AX,3BX (5)MOV AX,BX+SI (6)MOV AX,2BX+SI答:(1)0200H (2)2A10H ( 3)0200H( 4) 5946H ( 5) 463CH ( 6) 6B59H3. 设 DS=
3、1000H,ES=2000H,SS=3500H,SI=00A0H,DI=0024H,BX=0100H,BP=0200H, 数据段中变量名为 VAL的偏移地址值为0030H,试说明下列源操作数字段的寻址方式是什 么?物理地址值是多少?(1) MOV AX,100H (2) MOV AX,VAL (3) MOV AX,BX( 4) MOV AX,ES: BX (5) MOV AX,SI (6) MOV AX,BX+10H( 7) MOV AX,BP ( 8) MOV AX,VALBPSI( 9) MOV AX,VALBXDI ( 10) MOV AX,BPDI答:( 1)直接, 10100H (2
4、)直接, 10030H (3)寄存器间接 ,10100H( 4)寄存器间接, 20100H ( 5)寄存器间接 ,100A0H ( 6)寄存器相对, 10110H( 7)寄存器间接, 35200H ( 8)相对基址变址, 352D0H( 9)相对基址变址, 10154H ( 10)基址变址, 35224H4. 写出下列指令的机器码( 1) MOV AL,CL (2) MOV DX,CX (3) MOV BX+100H,3150H答:( 1 ) 10001010 11000001B( 2) 10001011 11010001B( 3) 11000111 10000111 00000000 000
5、00001 01010000 00110001B5. 已知程序的数据段为:DATA SEGMENTA DB $ ,10HB DB COMPUTERC DW 1234H, 0FFHD DB 5 DUP(?)E DD 1200459AHDATA ENDS 求下列程序段执行后的结果是什么。MOV AL, AMOV DX, CXCHG DL, AMOV BX, OFFSET BMOV CX, 3BXLEA BX, DLDS SI, ELES DI, E答: MOV AL, A AL=24HMOV DX, C DX=1234HXCHG DL, A DL=24H, A=34HMOV BX, OFFSET
6、B BX=2MOV CX, 3BX CX=5550HLEA BX, D BX=000EHLDS SI, E DS=1200H, SI=459AHLES DI, E ES=1200H, DI=459AH6. 指出下列指令中哪些是错误的,错在什么地方。(1)MOV DL,AX ( 2) MOV 8650H, AX (3)MOV DS, 0200H(4)MOVBX ,1200H (5)MOVIP,0FFH ( 6) MOV BX+SI+3 , IP(7)MOVAX,BXBP (8)MOVAL,ES: BP (9) MOV DL, SIDI( 10)MOVAX,OFFSET0A20H(11)MOVAL
7、,OFFSE TABLE(12) XCHGAL,50H ( 13)IN BL,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. 已知
8、当前数据段中有一个十进制数字 09的7段代码表,其数值依次为 40H,79H, 24H,30H, 19H, 12H, 02H, 78H, 00H, 18H。要求用 XLAT 指 令将十进制数 57 转换成相应的7 段代码值, 存到 BX 寄存器中, 试写出相应的程序段。 答: DATA SEGMENTTABLEDB 40H, 79H, 24H, 30H, 19H, 12H, 02H, 78H, 00H, 18HDATA ENDSMOV AL, 5 MOV BX, OFFSET TABLEXLAT TABLE MOV CL, ALMOV AL, 7XLAT TABLEMOV BL, ALMOV
9、BH, CL8. 已知当前 SS=1050H, SP=0100H,AX=4860H,BX=1287H, 试用示意图表示执行下列指令过程中,堆栈中的内容和堆栈指针 SP 是怎样变化的。PUSH AXPUSH BXPOP BXPOP AX(1)指9. 下列指令完成什么功能?(1) ADDAL, DH (2) ADCBX, CX (3) SUBAX 2710H(4) DEC BX (5) NEG CX ( 6) INC BL(7) MUL BX (8) DIV CL答:(1) AL+DIHAL (2) BX+CX+CRBX (3) AX-2710H AX( 4) BX-1 BX (5) O-CX C
10、X (6) BL+1BL(7) AX*B DX AX (8) AX/CL 商AL,余数AH10. 已知 AX=2508H BX=0F36H CX=0004H DX=1864H 求下列每条指令执行后的结果是什么?标志位 CF等于什么?(1) AND AH CL ( 2) OR BL, 30H (3) NOT AX(4) XORCX 0FFF0H (5) TESTDH, 0FH (6) CMPCX, 00H(7) SHR DX CL (8) SAR AL, 1 (9) SHL BH CL (10) SAL AX, 1 (11) RCL BX, 1 (12) RORDX, CL答:(1) AX=04
11、08H 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=011. 假设数据段定义如下:DATA SEGMENTSTRING DB The Personal Computer & TV DATA ENDS试用字符串操作等指令编程完成
12、以下功能:(1 )把该字符串传送到附加段中偏移量为 GET_CHAR开始的内存单元中。(2)比较该字符串是否与 he Computer相同,若相同 则将 AL 寄存器的内容置 1,否则置0。并要求将比较次数送到 BL 寄存器中。( 3)检查该字符串是否有 &,若有则用空格字符将其 替换。(4)把字符串大写字母传送到附加段中以 CAPS开始的单元中,其余字符传到以 CHART开始的单元中。 然后将数据段中存储上述字符串的单元 清 0 。答:( 1) CLDLEA SI,STRINGLEA DI,GET_CHARMOV CX,26REP MOVSB( 2)补充在附加段定义STRING1 DB Th
13、e computer MOV AL,1CLDLEA SI,STRINGLEA DI,STRING1MOV CX,12REPZ CMPSBJZ SKIPMOV AL,0SKIP: MOV BX,12SUB BX,CX(3) MOV AX, DATAMOV ES, AXCLDMOV AL,&LEA DI,STRINGMOV CX,26NEXT: REPNE SCASBJZ FINDJMP EXITFIND: MOV BYTE PTR DI-1, JCXZ EXITJMP NEXTEXIT:(4) LEA SI,STRINGLEA DI,CAPSLEA BX,CHARTMOV CX,26NEXT:
14、MOV AL, SICMP AL,AJB OTHERCMP AL,ZJA OTHERMOV ES:DI,ALINC DIJMP SKIPOTHER: MOV ES:BX,ALINC BXSKIP: MOV BYTE PTRSI,0INC SILOOP NEXT12. AX 中的内容不编程将 AX 寄存器中的内容以相反的顺序传送到 DX 寄存器中,并要求 被破坏,然后统计 DX 寄存器中 1的个数是多少。答: MOV BL,0PUSH AXMOV DX,0MOV CX,16NEXT: SHL AX,1JNC SKIPINC BLSKIP: RCR DX,1LOOP NEXTSTOP: POP A
15、X13. 设 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) JMP PROG_N2) JMP BX3) JMP BX(4) JMP FAR PROG_F(5) JMP DWORD PTR BX如将上述指令中的操作码 JMP改成CALL,则每条指令执行完后,程序转
16、向何处执行?并 请画图说明堆栈中的内容和堆栈指针如何变化。答:(1) 1200H: 0278H(2) 1200H: 0300H3) 1200H: 4800H(4)3400H: 0ABCH5)00FFH: 4800H将操作码JMP改成CALL后:(1) 1200H: 0278H指令长度为 3,贝U IP=0100H+3=0103H,入栈C 1 12OOH: 0C17EH扌H 争民廈角 3” m 0100&-3-0103H. 人程指令长度为2,则IP=0100H+2=0102H,入栈50OOH. (W00H5000H. 03FCHO2HO1H5OO0H- 03FEHOOHIZH2 04QQH(5)
17、 00FFH: 4800H14.在下列程序段括号中分别填入以下指令(1) LOOP NEXT (2) LOOPE NEXT (3) 试说明在这三种情况下,程序段执行完后,LOOPNE NEXTAX BX, CX, DX的内容分别是什么START: MOV AX,01HMOV BX,02HMOV DX,03HMOV CX,04HNEXT: INC AXADD BX,AXSHR DX,1( )答:( 1) AX=05H BX=10H CX=0 DX=0(2) AX=02H BX=04H CX=03H DX=01H(3) AX=03H BX=07H CX=02H DX=015. 某班有7个同学英语成
18、绩低于 80分,分数存在ARRAY数组中,试编程完成以下工作:(1) 给每人加5分,结果存到NEW数组中(2) 把总分存到SUM单元中答: DATA SEGMENTARRAY DB?,?,?,?,?,?,?NEW DB 7 DUP(?)SUM DW 0DATA ENDSMOV AX, DATAMOV DS, AX( 1 ) LEA SI,ARRAYLEA DI,NEWMOV CX,7NEXT: MOV AL, SIADD AL, 5MOV DI, ALINC SIINC DILOOP NEXT( 2) LEA SI , ARRAYCLCSP5OOOH:OOOOH5OOOH:O3FCH5OOOH
19、:O3FEH5OOOH:O4OOHMOV CX, 7NEXT1: MOV AL, SIMOV AH, 0ADC SUM, AXINC SILOOP NEXT116. 中断向量表的作用是什么?它放在内存的什么区域内?中断向量表中的什么地址用于 类型 3 的中断?答:中断向量表用来存放中断服务程序的入口地址。 8086 的 256 类中断的入口地址要占用1K字节,位于内存 OOOOOHH 003FFH的区域内。中断向量表中 OOOOCHH OOOOFH用于类型 3 的中断。17. 设类型2的中断服务程序的起始地址为 O485: OO16H,它在中断向量表中如何存放?答:物理地址 内容OOOO8H
20、16HOOOO9H OOHOOOOAH 85HOOOOBH O4H18. 若中断向量表中地址为 0040H中存放240BH, 0042H单元里存放的是 D169H试问:( 1)这些单元对应的中断类型是什么?( 2)该中断服务程序的起始地址是什么?答:( 1 ) 1OH( 2)D169H:240BH19. 简要说明8086响应类型04中断的条件是什么?答:类型 0:除法错中断执行除法指令时,若除数为 0 或所得商超过寄存器能容纳的范围,则自动产生类型 0 中断。类型 1:单步中断若CPU的单步标志TF=1,则每执行完一条指令后,自动产生类型 1中断。类型 2:不可屏蔽中断 NMI当 8086 的
21、 NMI 引脚上接收到由低变高的电平变化时,将自动产生类型 2 中断。类型 3:断点中断 若在程序中某位置设置断点,当程序执行到该断点时,则产生类型 3 中断。类型 4:溢出中断若溢出标志OF=1,则可由溢出中断指令 INTO产生类型4中断。 第四章1. 下列变量各占多少字节?A1 DW 23H, 5876HA2 DB 3 DUP(?), 0AH,0DH, $A3 DD 5 DUP(1234H, 567890H)A4 DB 4 DUP(3 DUP(1, 2, ABC)答: A1 占 4 个字节A2 占 6 个字节A3 占 40 个字节A4 占 60 个字节2. 下列指令完成什么功能?MOV A
22、X,00FFH AND 1122H+3344HMOV AL, 15 GE 1111BMOV AX,00FFH LE 255+6/5AND AL, 50 MOD 4OR AX, 0F00FH AND 1234 OR 00FFH答:( 1 )将 0066H 传送给 AX(2)将 0FFH 传送给 AL( 3)将 0FFFFH 传送给 AX(4) AND AL,02H(5) OR AX,00FFH3. 有符号定义语句如下:BUF DB 3,4,5, 123ABUF DB 0L EQU ABUF-BUF 求 L 的值为多少? 答: L=64. 假设程序中的数据定义如下:PAR DW ?PNAME DB
23、 16 DUP(?)COUNT DD ?PLENTH EQU $-PAR求PLENTH的值为多少?表示什么意义?答:PAR的偏移地址为0,PLENTH当前偏移地址$=2+16+4=22, $-PAR=22,故PLENTH 的值为 22。若在PLENTH所在行有变量定义,则$表示该变量的偏移地址,即 $表示PLENTH所在 行的当前偏移地址。故 PLENTH表示从当前行到PAR之间定义的变量所占的字节个数。5. 对于下面的数据定义,各条 MOV指令执行后,有关寄存器的内容是什么? DA1 DB ?DA2 DW 10 DUP(?)DA3 DB ABCDMOV AX, TYPE DA1MOV BX,
24、 SIZE DA2MOV CX, LENGTH DA3答: AX=1,BX=20,CX=16. 下段程序完成后, AH 等于什么?IN AL, 5FHTEST AL, 80HJZ L1MOV AH, 0JMP STOPL1: MOV AH, 0FFHSTOP: HLT答:讨论从端口 5FH输入的数据最高位的情况。若最高位为 1,则AH=0若最高位为0,则 AH=0FFH。7. 编程序完成下列功能:( 1 )利用中断调用产生 5 秒延时。(2)利用中断调用,在屏幕上显示 19之间随机数。答:( 1)可以利用中断类型 1CH 来处理,因为在系统时钟的中断处理程序中,时钟中断一 次要调用一次INT
25、1CH,即每隔55ms,产生一次1CH中断,要产生5秒延时,只要中断 5s/55ms=91 次即可。又因 1CH 中断处理程序中只有一条 IRET 指令,故可将用户的程序代 替原有的 INT 1CH 程序。DATA SEGMENTCOUNT DW 91 ;计数器MESS DB5s delayed! ,0AH,0DH, $DATA ENDSCODE SEGMENTMAIN PROC FARASSUME CS:CODE,DS:DATA,ES:DATASTART: PUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,AXMOV AL,1CH ;得到原中断向量MOV AH,35HINT 21HPUSH ES ;存储原中断向量PUSH BXPUSH DSMOV DX,OFFSET DELAY DELAY 的偏移地址和段地址MOV AX,SEG DELAYMOV DS,AXMOV AL,1CH ;设置中断向量MOV AH,25HINT 21HPOP DSIN AL,21H ;设置中断屏蔽位AND AL,0FEHOUT 21H,ALSTIMOV DI,2000H ;主程序延迟,在执行此段程序期间A1: MOV SI,3000H ;产生中断A2: DEC SIJNZ A2DEC DIJNZ A1POP DX ;取原中断向量POP DSMOV AL,1CH
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1