📜  8086程序查找n个数的平均值(1)

📅  最后修改于: 2023-12-03 15:13:09.896000             🧑  作者: Mango

使用8086程序查找n个数的平均值

介绍以下使用8086汇编语言编写的程序,该程序可以查找n个数的平均值。此程序适用于16位的8086微处理器。

程序的实现

此程序使用了输入/输出操作、循环和累加器。以下是程序的大致实现步骤:

  1. 提示用户输入要求的数字个数n;
  2. 使用循环输入n个数字;
  3. 将输入的数字加起来放入累加器中;
  4. 除以n得到平均值;
  5. 输出结果。
代码详解

以下是程序的汇编代码片段,注释中详细解释了代码的功能:

; 8086程序查找n个数的平均值

.DATA
prompt DB 'Enter the total numbers:', 0DH, 0AH, '$'
result DB 'The average is:', 0DH, 0AH, '$'
n DW ?             ; 用于存储要求的数字个数
num DW ?           ; 用于存储输入的数字
sum DW 0           ; 存储累加器的值

.CODE
MAIN PROC

    MOV AX, @DATA     ; AX寄存器指向DATA段
    MOV DS, AX        ; DS寄存器指向AX寄存器
    MOV BX, 0         ; 初始化累加器值
    MOV SI, OFFSET prompt
    CALL WRITE_STRING ; 输出提示信息
    CALL READ_DEC     ; 读取要求数字的个数
    MOV [n], AX       ; 将其存储到n中
    MOV CX, [n]       ; 循环n次输入数字
    MOV SI, 0

INPUT_LOOP:
    CALL READ_DEC     ; 读取数字
    MOV [num], AX     ; 将其存储到num中
    ADD BX, [num]     ; 将数字加到累加器中
    LOOP INPUT_LOOP   ; 继续循环

    MOV AX, BX        ; 将累加器的值存储到AX中
    MOV BX, [n]       ; 将数字个数存储到BX中
    DIV BX            ; 将累加器的值除以数字个数
    MOV [sum], AX     ; 将结果存储到sum中

    MOV SI, OFFSET result
    CALL WRITE_STRING ; 输出结果

    MOV AX, [sum]
    CALL WRITE_DEC    ; 输出平均值

    MOV AH, 4CH       ; 返回DOS
    INT 21H           ; 调用DOS

MAIN ENDP
使用方法

将以上程序保存为一个.asm格式的文件,使用MASM和链接器将其汇编和链接成一个可执行文件。运行该可执行文件,程序将提示您输入要求的数字个数。然后程序将要求您输入这些数字。程序将计算这些数字的平均值,并将其打印到屏幕上。

总结

此程序是一个简单但有用的示例,它表明了如何使用8086汇编语言来执行此类计算。虽然此程序可简化为许多其他编程语言,但此实现突出了汇编语言的灵活性和低级别掌握计算机底层的技术,是学习计算机科学的一个很好的例子。