微机原理及接口技术习题解答与实验指导 下载本文

21.子程序的调用与返回分段内和段间两种情况,对于段内调用与返回仅需要修改____(1)____的值,对于段间调用与返回需要同时修改____(2)____和____(3)____的值。执行CALL指令时,这些值均自动保存在____(4)____中。 解:(1)IP (2)CS (3)IP (4)堆栈

22.近过程(NEAR)的返回指令RET把当前栈顶的一个字弹出到____(1)____;远过程(FAR)的返回指令RET将先弹出一个字到____(2)____后又弹出一个字到____(3)____;IRET是____(4)____指令,它从堆栈栈顶顺序弹出三个字分别送到____(5)____、____(6)____ 和____(7)____

解:(1)IP (2)IP (3)CS (4) 中断返回 (5)IP (6)CS (7)标志寄存器FR 23.段内和段间的转移指令寻找方_____(1)_____和_____(2)_____两种。 [解] (1)直接寻址 (2)间接寻址 24.用CMP指令对无符号比较(A-B),当A

25.四条逻辑运算指令AND,OR,XOR,NOT中,_____(1)_____指令对标志位均无影响,而其他3条指令除对标志位 SF,ZF,PF有影响外,还使_____(2)_____和_____(3)_____总是置“0”,AF不确定。 [解] (1)NOT (2)CF (3)OF

26.如果要对一个字节或一个字的数求反,可用指令_____(1)_____,要对寄存器或存储单元内容中指定位求反则可运用_____(2)_____指令。

[解] (1)NOT (2)XOR 27.根据要求写出相应的指令。

(1)将附加段200H偏移地址中的数据送到BX中_____(1)_____ (2)将DH中的高4位求反,低4位保持不变。_____(2)_____

(3)将CL的符号位(D7位)置1,保持其他位不变。_____(3)_____ [解] (1)MOV BX, ES :[200H] (2)XOR DH,0F0H (3)OR CL,80H

28.压缩型BCD码加法调整指令为_____(1)_____,非压缩型BCD码加法调整指令为_____(2)_____,压缩型BCD码减法调整指令为_____(3)_____,非压缩型BCD码减法调整指令为_____(4)_____。 [解] (1)DAA (2)AAA (3)DAS (4)AAS 29.下面一段程序段: MOV AX,0 MOV AL,09H ADD AL,04H

1) 若要获得AX=13H,则在ADD指令后面加一条指令_____(1)_____ 2) 若要获得AX=0103H,则在ADD指令后面加一条指令_____(2)_____ [解] (1)DAA (2)AAA

30.试填空完善下面一段程序,使之完成对100个字单元的缓冲区清零,设缓冲区为2000H:0800H。 MOV AX,2000H MOV ES,AX MOV DI,0800H _____(1)_____ MOV AL,00H CLD

REP STOSB

[解] (1) MOV CX,100 31.试完成下面子程序,使其实现利用DOS功能调用INT21H,将一个DL中的字节数据的低4位ASCII码的形式显示出来。

DISPL PROC NEAR

31

_____(1)_____ CMP DL,9 JBE NEXT ADD DL,7 NEXT:ADD DL,30H _____(2)_____ _____(3)_____ RET

DISPL _____(4)_____

[解] (1) AND DL,OFH (2) MOV AH,2 (3) INT 21H (4)ENDP

32.试完成下面程序段,使其完成将存储单元DA1中压缩型BCD码,拆成二个非压缩型BCD码,低位放入DA2单元,高位放入DA3单元,并分别转换为ASCII码。 STRT: MOV AL,DA1 MOV CL,4 _____(1)_____ OR AL,30H MOV DA3,AL MOV AL,DA1 _____(2)_____ OR AL,30H MOV DA2,AL

[解] (1) SHR AL,CL (2) AND AL,OFH

34.分析下列程序段,程序段执行后 AX=_____(1)_____,BX=_____(2)_____,CF_____(1)_____。 MOV AX,5C8FH MOV BX,0AB8FH XOR AX,BX XOR AX,BX

[解] (1)5C8FH (2)0AB8FH (3)0

35.分析下列程序段,程序段执行后 AX=_____(1)_____,BX=_____(2)_____,CF=_____(1)_____。 XOR AX,AX INC AX NEG AX

MOV BX, 3FFFH ADC AX, BX

[ 解] (1) 3FFFH (2) 3FFFH (3) 1

36. 分析下列程序段,在横线上填上适当的内容。 1) MOV AL, OFH MOV BL, OC3H XOR AL, BL 则有:AL =(1),BL =(2 )CF =(3) 2) Mov BL, 93H MOV AL, 16H ADD AL, BL DAA

则有:AL =_(4),CF=(5),AF=(6) 3) Mov AX, BX

32

NOT AX

ADD AX, BX

则有:AX=(7) CF =(8) 4) Mov AL,88H MOV BL,5AH XOR AL,BL XOR AL,BL

则有:AL=(9),CF =(10)

【解】 (1)OCCH (2)OC3H (3)0 (4)O9H (5)1 (6) 0 (7) OFFFFH (8) 0 (9) 88H (10) 0

3.5 简答题、

1. 简述一条指令中一般包含哪些信息。

【解】一般一条指令中包含操作码和操作数两部分信息。 2. 简述计算机中操作数可能存放的位置。

【解】计算机申操作数可能存放在指令中、寄存器中、存储单元中和I/0接口中。 3. 名词解释:操作码、操作数、立即数、寄存器操作数、存储器操作数。 【解】

1)操作码:给出指令要完成的操作。 2)操作数:给出参与操作的对象。

3)立即数:要参与操作的数据在指令中。

4)寄存器操作数:要参与操作的数据,存放在指定的寄存器中。 5)存储器操作数:要参与操作的数据,存放在指定的存储单元中。 4. 什么是寻址方式?

【解】指令中用以描述操作数所在位置的方法称为寻址方式。

5. 内存操作数的逻辑地址表达式为——段基值:偏移量,试写出偏移量的有效地址EA的计算通式。 【解】偏移量的有效地址EA的计算通式为:EA=基址值 +变址值 +位移量。

其中:基址值为 BX或BP的内容,变址值为 SI或DI的内容,位移量为8 位disp8或16位displ6数据。 6. 指出下列各指令目的操作数所在的位置,并写出相应的地址。 1) ADD [ SI] , Ax 2) MOV CL, BUF 3) DEC [ BP + 50H] 4) OUT 20H, AL

5) JMP 2000H: 0100H 6) JMP [BX] 7) JMP BX 【解】

1)目的操作数在内存单元中,其逻辑地址为 DS:[SI],其物理地址 = DS * 16 + S1。 2)目的操作数在寄存器CL中。

3)目的操作数在内存单元中,其逻辑地址为 SS:[BP +50H],其物理地址 = SS * 16 +BP + 50HO 4)目的操作数在端口中,端口地址为:20H。 5)目的操作数在指令中。

6)目的操作数在内存单元中,其逻辑地址为 DS:[BX],其物理地址 = DS * 16 +BXo 7)目的操作数在寄存器BX中。

7. 两个逻辑段地址分别为 2345H:OOOOH和2000H:3450H,它们对应的物理地址是多少? 说明了什么?

33

【解】这两个逻辑段对应的物理地址均为 23450H,说明对应同一个物理地址可以有不 同的逻辑地址。即物理地址是惟一的,逻辑地址不惟一。

8. 设DS = 3000H,BX = 2000H,[ SI]=IOOOH,MAX =l230H,则指令 MOV AX,MAX [BX][SI]的源操作数物理地址为多少?

【解} 源操作数物理地址为 = DS * 16 + BX + SI +MAX= 30000H+ (2000H + IOOOH + 1230H) = 34230H,

9. 设当前 BX =Ol58H,DI=lOA5H,位移量 =lB57H,DS = 2100H,SS =11OOH,BP = O1OOH,段寄存器默认,写出以下各寻址方式胸物理地址。 1)直接寻址。

2)寄存器间接寻址 (设采用BX)。 3)寄存器相对寻址 (设采用BP)。 4)基址变址寻址 (设采用BX和 DI)o

5)相对基址变址寻址 (设采用BP、DI和位移量)。 【解】

1)物理地址 = DS * 16 +位移量 = 21000H + lB57H =22857H。 2)物理地址 = DS * 16 + BX =21000H十 Ol58H =21158H。 3)物理地址 = SS * 16 + BP = 11OOOH +O1OOH = 111OOH。

4)物理地址 = DS * 16 + BX + DI=21000 + Ol58H +lOA5H = 221FDH。

5)物理地址 = SS*16 +BP+ DI = 11OOOH +O1OOH + lOA5H +lB57H = l3CFCH。

10. 在转移类指令中,对转移的目标地址的寻址方式有几种?段内转移的范围是多大?段间 转移的范围是多大?条件转移的范围是多大7

【解】在转移类指令中,对转移的目标地址的寻址方式有段内直接转移、段内间接转 移、段间直接转移和段间间接转移。段内直接转移的范围为 - 32768~+ 32767,段内短转移 是在当前 IP 偏移值的 - 128 ~ + 127字节的范围内 (又称为相对寻址)。段间转移的范围可 以在1MB范围内。条件转移指令,均为段内短转移,其转移的范围为 IP 当前值的- 128 ~ + 127字节的偏移量范围内。

11. 条件转移指令均为相对近转移指令,请解释“相对近转移”的含义。若须往较远处进行 条件转移,应怎么做? 【解】“相对”是指相对于指令指针寄存器IP的当前值进行的转移。相对近转移范围 为- 128 ~ + l27. 若转移的目标地址较远,超出指令要求的范围,则可在相对转移的目标地 址处,放置一条无条件转移指令,从而实现较远距离的转移。

12. 已知 DS =5000H,CS =6000H,BX =1278H,SI =345FH,(546D7H)=0,(546D8H)= 80H。在分别执行下面两条段内转移指令后,实际转移的目标物理地址是多少? ( 1 ) JMP BX (2) JMP [BX+SI] 【解】

1)段内转移的目标地址存放在寄存器BX中,故实际的转移地址是6000H:l278H,其 物理地址 = CS * 16 + BX = 60000H + l278H = 61278H.

2)段内转移的目标地址存放在内存单元中,该单元的物理地址 = DS * 16 + BX + SI = 50000H + l278H+345FH =546D7H,故实际的转移地址是6000H:8000H,其物理地址= CS * 16 + 8000H = 60000H + 8000H = 68000H.

13. 若一个堆栈段的起始地址为 3520H:OOOOH,栈区的长度为 O1OOH,当前SP 的内容为 OO20H,试问:

1)栈顶的物理地址是什么? 2)栈底的物理地址是什么? 3)栈区中已有字节数为多少?

4)存入数据l234H和5678H后SP的内容是多少?

【解】堆栈的最高地址叫栈底,堆栈指针SP总是指向栈顶。

34

1)栈顶的物理地址 = SS * 1OH + SP = 3520H * 1OH +OO80H = 35280H。 2)栈底的物理地址 = SS * IOH + OIOOH二35300H 3)栈区中已有字节数 = 1OOH - 20H=OEOH。

4)8086/8088 的堆栈操作为字操作。在压人两个字数据l234H和5678H后,SP减4, 所以SP的内容为:SP - (字数 * 2)= OO20H -2 *2 =OO1CH,SS的内容不变。 14. 简述RET指令与IRET指令的异同点。

【解】RET指令与IRET指令的异同如表3-1所示。 表3,1:RET指令与 IRET 指令的异同

15. 采用最少的指令,实现下述要求的功能。 1)AH的高4位清0。

2)将 AH 中的非压缩型BCD码转化成ASCII码。 3)AIL的高4位取反。

4)AL的高4位移到低4位,高4位清0。 【解】

1) AND AH, OFH 2) OR AH, 30H 3) XOR AL, OFOH 4) MOV CL, 4 SHR AL, CL

16. 试比较 SUB AL,O9H与 CMP AL,O9H这两条指令的异同,若AL = O8H,写出执行 两条指令后,对6个状态标志位的影响。

【解]SUB AL,O9H与 CMP AL,O9H指令功能的对比如表 3-2所示。 表3-2 SUB AL,O9H与 CMP AL,09指令功能的对比

17. 阅读下面8086程序段,指出该程序段的功能。 AGN1: MOV AL, [ DI] INC DI

TEST AL,04H

35