《微机原理与接口技术》周何琴课后习题答案

发布时间 : 星期六 文章《微机原理与接口技术》周何琴课后习题答案更新完毕开始阅读

END START

调试程序:

STACK SEGMENT STACK

DB 100 DUP(?)STACK ENDS

DATA SEGMENT

ARRAY DB 65H,76H,78H,54H,90H,85H,68H NEW DB 7 DUP(?) SUM DB 00H,00H AVG DB 0DATA ENDS

BUF1 DW 100 DUP (?) CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACKSTART: PUSH DS

MOV AX,DATA

MOV DS,AX MOV CX, 7 MOV SI, 0

MOV SUM, 0 MOV AH, 0

LP1: MOV AL, ARRAY[SI] ADD AL, 05H DAA

MOV NEW[SI], AL ADD AL , SUM DAA

MOV SUM,AL ADC AH, 0 INC SI

MOV SUM+1, AH LOOP LP1

MOV AL, SUM MOV BL,07H DIV BL HLT

MOV AH,SUM+1

MOV AVG, ALCODE ENDS

END START

13. 设CS=1200H, IP=0100H, SS=5000H, SP=0400H, DS=2000H, SI=3000H, BX=0300H, (20300H)=4800H,

9

(20302H)=00FFH, TABLE=0500H, PROG_N标号的地址为1200:0278 H,PROG_F标号的地址为3400:0ABCH。说明下列每条指令执行完后,程序分别转移到何处执行?JMP指令

(1)JMP PROG_N(2)JMP BX

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

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

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

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

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

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

JMP改为CALL后,目的地址与JMP相同。 (1)CALL PROG_N

段间存储器间接转移,目的地址为00FFH:4800H(或057F0H)

段内直接调用,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 SP=03FCH

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

(5)CALL DWORD PTR[BX] SP=03FCH

部分调试程序:

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

STACK SEGMENT STACK

DB 100 DUP(?)STACK ENDS

DATA SEGMENT BUF DW 12 ORG 300H

BUF1 DW 100 DUP (?)

DB 00H,48H,0FFH,00H

10

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACKSTART: PUSH DS

MOV AX,DATA

MOV DS,AX MOV BX,0300H CALL PROG_N CALL BX ORG 0278

CALL [BX] PROG_N:RET ORG 0300H RET RET HLT

ORG 4800H

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, 04HNEXT: INC AX

ADD BX, AX~ SHR DX, 1 ( ) 解:

DX

LOOP过程: AX BX CX

初始值

01H

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

04H 0BH 10H

02H 04H

03H 01H 01H 00H

DX

03 H

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

00H

00H

AX BX CX (1)

05H

10H

00H

00H

11

(2) (3)

02H 03H

04H 07H

03H 02H

01H00H

执行一次,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 RET 16

LOOP DLY1 17 ×(N-1)+ 5

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

N=1250=04E2H延时子程为:

DELAY5:MOV CX,04E2H DLY1:NOP RET

LOOP DLY1

第4章作业

P153

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

X1 DB 65H, 78HX3 DD ?

X2 DW 06FFH, 5200HGO: MOV AL, TYPE X1 MOV BL, TYPE X2 MOV CL, TYPE X3 MOV BH, SIZE X2解:

MOV AH, TYPE GO

MOV CH, LENGTH X3

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

变量 X1 X2

偏移地址 0000H 0001H 0002H 0003H

数据 65H 78H FFH 06H 12

联系合同范文客服:xxxxx#qq.com(#替换为@)