微机原理与接口技术周何琴课后习题答案 - 图文 下载本文

MOV AH,SUM+1 MOV BL,07H DIV BL

MOV AVG, AL HLT CODE ENDS

END START

13. 设CS=1200H, IP=0100H, SS=5000H, SP=0400H, DS=2000H, SI=3000H, BX=0300H, (20300H)=4800H, (20302H)=00FFH, TABLE=0500H, PROG_N标号的地址为1200:0278 H,PROG_F标号的地址为3400:0ABCH。说明下列每条指令执行完后,程序分别转移到何处执行? JMP指令 (1)JMP PROG_N

段内直接近转移,目的地址为1200H:0278H(或12278H) (2)JMP BX

段内寄存器间接转移,目的地址为1200H:0300H(或12300H) (3)JMP [BX]

物理地址=DS×10H+BX=2000H×10H+0300H=20300H (20300H)=4800H→IP

段内存储器间接转移,目的地址为1200H:4800H(或16800H) (4)JMP FAR PROG_F

段间直接转移,目的地址为3400H:0ABCH(或34ABCH) (5)JMP DWORD PTR[BX]

物理地址=DS×10H+BX=2000H×10H+0300H=20300H (20300H)=4800H→IP, (20302H)=00FFH→CS

段间存储器间接转移,目的地址为00FFH:4800H(或057F0H) JMP改为CALL后,目的地址与JMP相同。 (1)CALL PROG_N

段内直接调用,3字节指令,目的地址为1200H:0278H(或12278H),0103H入栈,SP=03FEH (2)CALL BX

段内寄存器间接调用,2字节指令,目的地址为1200H:0300H(或12300H) ,0102H入栈,SP=03FEH (3)CALL [BX]

段内存储器间接调用,2字节指令,目的地址为1200H:4800H(或16800H),0102H入栈,SP=03FEH (4)CALL FAR PROG_F

段间直接调用,5字节指令,目的地址为3400H:0ABCH(或34ABCH),1200H和0105H分别入栈,SP=03FCH

(5)CALL DWORD PTR[BX]

段间间接调用,2字节指令,目的地址为00FFH:4800H(或057F0H),1200H和0102H分别入栈,SP=03FCH 部分调试程序:

STACK SEGMENT STACK

DB 100 DUP(?) STACK ENDS DATA SEGMENT BUF DW 12

BUF1 DW 100 DUP (?) ORG 300H

DB 00H,48H,0FFH,00H DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK START: PUSH DS

MOV AX,DATA

MOV DS,AX MOV BX,0300H CALL PROG_N CALL BX CALL [BX] ORG 0278 PROG_N:RET ORG 0300H RET ORG 4800H RET

HLT CODE ENDS

END START

14. 如在下列程序段的括号中分别填入以下指令: (1)LOOP NEXT (2) LOOPE NEXT (3) LOOPNE NEXT

试说明在这三种情况下,程序段执行完后,AX, BX, CX, DX寄存器的内容分别是什么 START: MOV AX, 01H

MOV BX, 02H

MOV DX, 03H MOV CX, 04H NEXT: INC AX ADD BX, AX~ SHR DX, 1 ( ) 解:

LOOP过程: AX BX CX

初始值

01H

循环1次 02H 循环3次 04H 循环4次 05H 结果:

AX BX CX

DX

04H 0BH 10H

DX

03 H

02H 04H

03H 01H 01H 00H

00H 00H

循环2次 03H 07H 02H 00H

(1) (2) (3)

05H 02H 03H

10H 04H 07H

00H 03H 02H

00H 01H 00H

执行一次,ZF=0,退出循环。 执行两次,ZF=1,退出循环。

20. 设8086CPU的时钟频率为5MHz,请编写延时5ms的子程序。 解:微机的主频率为5MHz

则:时钟周期=主频率的倒数=1/(5×10-6)=0.2μs

延时5ms需要的时钟周期数= 5ms/ 0.2μs=25000 延时子程序如下:

DELAY5:MOV CX,N 4 DLY1:NOP 3 ×N LOOP DLY1 17 ×(N-1)+ 5 RET 16

应该有25000=4+ 3 ×N+ 17 ×(N-1)+ 5+16,才能实现要求的延时。则: N=1250=04E2H 延时子程为:

DELAY5:MOV CX,04E2H DLY1:NOP LOOP DLY1 RET

第4章作业

P153

5. 阅读下列程序,说明每条指令执行后的结果是什么?

X1 DB 65H, 78H X2 DW 06FFH, 5200H X3 DD ?

GO: MOV AL, TYPE X1 MOV BL, TYPE X2 MOV CL, TYPE X3

MOV AH, TYPE GO MOV BH, SIZE X2

MOV CH, LENGTH X3 解:

(1)前三条语句的功能是设置数据于数据段中,从数据段偏移地址0000H开始存放。 变量 X1 X2 X3

偏移地址 0000H 0001H 0002H 0003H 0004H 0005H 0006H

数据 65H 78H FFH 06H 78H 00H 随机数

0007H 0008H 0009H

随机数 随机数 随机数 程序汇编后结果如下:

六条程序执行结果如下:

(AL)=01H;设置变量类型属性,字节数 (BL)=02H;设置变量类型属性,字节数 (CL)=04H;设置变量类型属性,字节数

(AH)=0FFH;设置GO显示类型,近标号,为-1,补码表示 (BH)=02H;设置数据类型,无DUP时,返回数据类型的字节数 (CH)=01H;无DUP时,返回1。 程序执行后结果如下:

调试程序如下:

STACK SEGMENT STACK DB 100 DUP(?) STACK ENDS DATA SEGMENT X1 DB 65H, 78H X2 DW 06FFH, 5200H X3 DD ? DATA ENDS