宏指令及子程序设计实验
一、实验目的
1、熟悉宏指令、宏定义、宏调用以及宏展开的概念;掌握宏指令的定义与调用的方法。 2、掌握子程序的定义、调用以及调用程序与子程序之间参数的传递方法。 3、了解宏指令与子程序的异同以及各自的适用场合。
二、实验内容
1、
从键盘输入10个无符号十进制数(小于256),将其转换为二进制数并存放在NUM字节型变量中,找出其中的最大数,并将找出的最大数在屏幕上显示出来。
要求:
① 在屏幕上显示字符串提示信息的功能由宏指令DSTRING实现; ② 将键盘输入的十进制数转换成二进制数由子程序DTOB实现;
③ 在N个无符号字节型二进制数中找出最大数的功能由子程序FMAX实现;
④ 将一个无符号字节型二进制数转换为十进制数并在屏幕上显示的功能由子程序BTOAD实现。 程序运行结果如右图所示。
COUNT EQU 10
DATA SEGMENT NUM DB 10 DUP(?) IBUF DB 7,0,6 DUP(?)
OBUF DB 6 DUP(?) INFOR1 DB \ INFOR2 DB \ INFOR3 DB 0AH,0DH,'$' DATA ENDS
STACK SEGMENT stack DATA2 DW 40 DUP(?) TOP EQU LENGTH DATA2 STACK ENDS
CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX MOV AX,TOP MOV SP,AX
DSTRING MACRO STRING PUSH DX PUSH AX MOV DX,OFFSET STRING MOV AH,09H INT 21H POP AX POP DX ENDM DSTRING INFOR1 MOV BX,OFFSET NUM MOV CX,COUNT LOOP1: CALL DTOB DSTRING INFOR3 MOV [BX],AL INC BX LOOP LOOP1 MOV AX,OFFSET NUM PUSH AX MOV CX,COUNT PUSH CX CALL FMAX DSTRING INFOR2 CALL BTOAD MOV AH,4CH INT 21H
DTOB PROC NEAR PUSH CX
MOV DX,OFFSET IBUF MOV AH,0AH INT 21H MOV CL,IBUF+1 MOV CH,0 MOV SI,OFFSET IBUF+2 MOV AX,0
AGAIN: MOV DX,10 MUL DX AND BYTE PTR [SI],0FH ADD AL,[SI] ADC AH,00H INC SI LOOP AGAIN POP CX RET
DTOB ENDP
FMAX PROC NEAR MOV AL,NUM MOV SI,OFFSET NUM MOV CX,9 LOOP2: INC SI CMP AL,[SI] JAE LOOP3 XCHG AL,[SI] LOOP3: DEC CX JNZ LOOP2 XOR AH,AH MOV OBUF,AL RET
FMAX ENDP
BTOAD PROC NEAR MOV BX, OFFSET OBUF+5 MOV BYTE PTR [BX],'$' MOV CX,10
LOOP4: MOV DX,0 DIV CX ADD DL,30H DEC BX MOV [BX],DL OR AX,AX JNZ LOOP4
MOV DX,BX MOV AH,09H INT 21H RET
BTOAD ENDP CODE ENDS END START 2、实验习题: 计算1+2+3+……+N.要求N由键盘输入;给出必要的提示信息(由宏调用实现);累加功能由子程序调用实现;二进制数(累加和)转换为十进制数并显示子程序调用实现. (1) 实验源代码: STACK SEGMENT stack DB 100 DUP(?) STACK ENDS DATA SEGMENT INF1 DB \ IBUF DB 7,0,6 DUP(?) OBUF DB 6 DUP(?) INF2 DB 0AH,0DH,\DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX DSTRING MACRO STRING PUSH DX PUSH AX MOV DX,OFFSET STRING MOV AH,09H INT 21H POP AX POP DX ENDM DSTRING INF1 CALL DTOB CALL ADDN CALL BTOAD MOV AH,4CH INT 21H
DTOB PROC NEAR PUSH CX
相关推荐: