实验5宏指令及子程序设计实验.docVIP

  • 1
  • 0
  • 约3.7千字
  • 约 5页
  • 2024-05-25 发布于河北
  • 举报

宏指令及子程序设计实验

一、实验目的

熟悉宏指令、宏定义、宏调用以及宏展开的概念;掌握宏指令的定义与调用的方法。

掌握子程序的定义、调用以及调用程序与子程序之间参数的传递方法。

了解宏指令与子程序的异同以及各自的适用场合。

二、实验内容

1、从键盘输入10个无符号十进制数(小于256),将其转换为二进制数并存放在NUM字节型变量中,找出其中的最大数,并将找出的最大数在屏幕上显示出来。

要求:

=1\*GB3①在屏幕上显示字符串提示信息的功能由宏指令DSTRING实现;

=2\*GB3②将键盘输入的十进制数转换成二进制数由子程序DTOB实现;

=3\*GB3③在N个无符号字节型二进制数中找出最大数的功能由子程序FMAX实现;

=4\*GB3④将一个无符号字节型二进制数转换为十进制数并在屏幕上显示的功能由子程序BTOAD实现。

程序运行结果如右图所示。

代码如下:

COUNT EQU 10

DATA SEGMENT

NUM DB10DUP(?)

IBUF DB7,0,6DUP(?)

OBUF DB6DUP(?)

INFOR1 DBPleaseinput10numbers:,0AH,0DH,$

INFOR2 DBThemaxfoundinthe10numbersis$

INFOR3 DB0AH,0DH,$

DATA ENDS

STACK SEGMENTstack

DATA2DW40DUP(?)

TOP EQULENGTHDATA2

STACKENDS

CODE SEGMENT

ASSUMECS:CODE,DS:DATA,SS:STACK

START: MOV AX,DATA

MOV DS,AX

MOV AX,STACK

MOV SS,AX

MOV AX,TOP

MOV SP,AXDSTRING MACRO STRING

PUSH DX

PUSHAX

MOV DX,OFFSETSTRING

MOV AH,09H

INT 21H

POP AX

POP DX

ENDM

DSTRING INFOR1

MOV BX,OFFSETNUM

MOV CX,COUNT

LOOP1: CALLDTOB

DSTRING INFOR3

MOV [BX],AL

INC BX

LOOP LOOP1

MOV AX,OFFSETNUM

MOV CX,COUNT

CALL FMAX

DSTRINGI NFOR2

CALL BTOAD

MOV AH,4CH

INT 21H

DTOB:MOV DX,OFFSETIBUF

MOV AH,0AH

INT 21H

MOV CL,IBUF+1

MOV CH,0

MOV SI,OFFSETIBUF+2

MOV AX,0

AGAIN: MOV DX,10

MUL DX

AND BYTEPTR[SI],0FH

ADD AL,[SI]

ADC AH,0

INC SI

LOOP AGAIN

RET

BTOAD: MOV BX,OFFSETOBUF+5

MOV BYTEPTR[BX],$

MOV CX,10

LOOP2: MOV DX,0

DIV CX

ADD DL,30H

DEC BX

MOV [BX],DL

OR AX,AX

JNZ LOOP2

MOV DX,BX

MOV AH,09H

INT 21H

RET

FMAX: DEC CX

MOV AL,[SI]

T1: INC SI

CMP AL,[SI]

JAE T2

XCHG AL,[SI]

T2: DEC CX

JNZ T1

RET

CODE ENDS

END START

从键盘输入N个十进制数,求它们的和(累加和要求不大于65535),并将累加结果在屏幕上显示出来。要求给出必要的提示信息(用宏调用完成);累加功能由子程序调用实现;二进制数形式的累加和转换为十进制数并显示由子程序调用实现。

代码如下:

DATA SEGMENT

NUM DB10DUP(?)

N D

文档评论(0)

1亿VIP精品文档

相关文档