《微机原理与接口技术》(第四版)周何琴课后习题答案 下载本文

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

ASSUME CS:CODE,DS:DATA,SS:STACK START: PUSH DS MOV AX,DATA MOV DS,AX 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 POP DS HLT CODE ENDS END START

6. 画出示意图,说明下列变量在内存中如何让存放?

A1 DB 12H, 34H A2 DB ‘Right.’ A3 DW 5678H A4 DB 3 DUP(?)

(1)设置数据于数据段中,从数据段偏移地址0000H开始存放。

变量 A1 A2 A3 A4

偏移地址 0000H 0001H 0002H 0003H 0004H 0005H 0006H 0007H 0008H 0009H 000AH 000BH

13

数据 12H 34H 52H 69H 67H 68H 74H 2EH 78H 56H 随机数 随机数

调试程序如下:

STACK SEGMENT STACK DB 100 DUP(?) STACK ENDS DATA SEGMENT A1 DB 12H, 34H A2 DB 'Right.' A3 DW 5678H A4 DB 3 DUP(?) DATA ENDS CODE SEGMENT

000CH 随机数 ASSUME CS:CODE,DS:DATA,SS:STACK START: PUSH DS MOV AX,DATA MOV DS,AX POP DS HLT CODE ENDS END START 程序汇编后结果如下:

12. 编程实现,从键盘输入一个十进制数0~9,查表求键入数字的七段代码(共阳极LED显示器的段码),存入DL中,并在键入数字之前,显示提示信息“Please input a number(0~9):”。 解:

STACK SEGMENT STACK

DB 100 DUP(?) STACK ENDS DATA SEGMENT

TABLE DB 0C0H, 0F9H, 0A4H, 0B0H, 99H, 92H, 82H, 0F8H, 80H, 90H BUF DB 'Please input one number(0~9):',0DH,0AH,'$'

14

DATA ENDS CODE

SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA START: PUSH DS MOV AX,DATA MOV DS,AX

MOV DX,OFFSET BUF

MOV AH,09H INT 21H MOV AH,1 INT 21H AND AL,0FH

MOV BX,OFFSET TABLE XLAT MOV DL,AL POP DS HLT CODE

ENDS END START

调试结果:

数字5的共阳极LED七段码为92H。

15. 已知:在内存BUF开始的单元中,存在一串数据:58,75,36,42,89。编程找出其中的最小值存入MIN单元中,并将这个数显示在屏幕上。 解:

STACK SEGMENT STACK

DB 100 DUP(?) STACK ENDS DATA SEGMENT

15

BUF DB 58H, 75H, 36H, 42H, 89H MIN DB 0 DATA ENDS CODE SEGMENT

ASSUME CS:CODE, DS:DATA, SS:STACK START: PUSH DS MOV AX, DATA MOV DS, AX MOV CX, 4

MOV BX, OFFSET BUF MOV AL, [BX] ST1: INC BX CMP AL, [BX] JBE NEXT MOV AL, [BX] NEXT:LOOP ST1 MOV MIN, AL AND AL, 0F0H MOV CL,4 ROR AL, CL ADD AL, 30H MOV DL, AL MOV AH, 02H INT 21H MOV AL, MIN AND AL, 0FH ADD AL, 30H MOV DL, AL MOV AH, 02H INT 21H POP DS MOV AH, 4CH INT 21H HLT CODE

18. 某班有20个同学的微机原理成绩存放在LIST开始的单元中,要求编程先从高到低的次序排列好,再求出总分和平均值,分别存放在SUM和AVER开始的单元中。 解:

STACK ENDS DATA SEGMENT

LIST DB 65H,76H,78H,54H,90H,85H,68H,66H,77H,88H

ENDS

END START

16