实验4 宏指令及子程序设计实验

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

要求:

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

2)将键盘输入的十进制数转换成二进制数由子程序DTOB实现;

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

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

COUNT EQU 10

DATA SEGMENT

NUM DB 10  DUP(?)

IBUF DB 7,0,6 DUP(?)

OBUF DB 6 DUP(?)

INFOR1 DB "Please input 10 numbers(<256):",0AH,0DH,'$'

INFOR2 DB "The max found in the 10 numbers is $"

INFOR3 DB 0AH,0DH,'$'

DATA ENDS

STACK SEGMENT stack

DATA2 DW 40 DUP(?)

TOP EQU LENGTH DATA2

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

FMAX PROC

PUSH CX            ;

PUSH SI            ;

MOV AL,NUM

MOV SI,OFFSET NUM

MOV CX,9

ONCEMORE:

INC SI

CMP AL,[SI]

JAE NOCHANGE

XCHG AL,[SI]

NOCHANGE:     

        DEC CX

JNE ONCEMORE   

MOV AH,0

POP SI            ;

POP CX             ;

RET

FMAX ENDP

BTOAD PROC                               ;子程序,将最大数在屏幕上显示

PUSH BX

PUSH CX

PUSH DX

MOV BX,OFFSET OBUF+5

MOV BYTE PTR[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 DL,0AH

 ;MOV AH,02H

 ;INT 21H

MOV AH,09H

INT 21H  

POP DX

POP CX

POP BX  

RET

BTOAD ENDP

DTOB PROC   ;子程序,从键盘输入一个小于256的数

PUSH CX     ;

PUSH DX     ;

PUSH SI     ;

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]

ADD AH,0

INC SI

LOOP AGAIN

POP SI        ;

POP DX        ;

POP CX        ;

RET

DTOB ENDP

CODE ENDS

END START

  • 19
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这是一个非常广泛的话题,因此我将尝试提供一些概述性的信息和建议。 汇编语言是一种低级别的编程语言,可以直接控制计算机硬件。在汇编语言中,指令和子程序都是很重要的概念。 指令是一种预处理器指令,用于定义一段代码片段,可以在程序中多次使用。例如,您可以使用指令来定义一些常用操作的缩写,以简化程序的编写。例如,您可以定义一个指令来计算两个数的和,然后在程序中多次使用该指令。 子程序是一组指令,可以被其他部分的程序调用,以执行某些特定的任务。子程序通常包含一些输入参数和返回值。在汇编语言中,子程序可以被定义为一个独立的代码段,或者可以作为指令的一部分。 下面是一些实验的建议: 1. 编写一个简单的指令,用于计算两个数的和,并在程序中多次使用该指令。 2. 编写一个子程序,实现一个简单的计算器功能,可以实现加、减、乘、除等操作。 3. 使用指令和子程序编写一个简单的程序,可以实现对一个数组进行排序。 4. 编写一个子程序,实现一个简单的字符串处理功能,例如,统计字符串中某个字符出现的次数。 5. 使用指令和子程序编写一个简单的程序,可以实现对一个文件进行读取和写入。 总之,汇编语言是一种非常强大的编程语言,可以用来编写高效的系统级别的程序。通过实验,您可以深入了解指令和子程序的设计和使用,以及如何将它们应用于实际的编程问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值