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
调试程序如下:
STACK SEGMENT STACK DB 100 DUP(?) STACK ENDS DATA SEGMENT A1 DB 12H, 34H A2 DB 'Right.' A3 DW 5678H A4 DB 3 DUP(?)
偏移地址 0000H 0001H 0002H 0003H 0004H 0005H 0006H 0007H 0008H 0009H 000AH 000BH 000CH
数据 12H 34H 52H 69H 67H 68H 74H 2EH 78H 56H 随机数 随机数 随机数 DATA ENDS CODE SEGMENT
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,'$' 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 MOVAH,09H INT 21H MOVAH,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
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
ENDS
ENDSTART
18. 某班有20个同学的微机原理成绩存放在LIST开始的单元中,要求编程先从高到低的次序排列好,再求出总分和平均值,分别存放在SUM和AVER开始的单元中。 解:
STACK ENDS DATA SEGMENT
LIST DB 65H,76H,78H,54H,90H,85H,68H,66H,77H,88H DB 99H, 89H, 79H, 69H,75H,85H,63H,73H,83H,93H SUM DW 0 AVER DB 0
BUF DB 100 DUP (?) DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK START: PUSH DS MOV AX,DATA MOV DS,AX
MOV DI, OFFSET LIST MOV BX, 19 LP0: MOV SI, DI MOV CX, BX LP1: MOV AL, [SI] INC SI