用8086汇编语言实现从键盘输入5个数求平均值
时间: 2024-02-18 07:06:26 浏览: 77
汇编语言求平均数
3星 · 编辑精心推荐
好的,下面是用8086汇编语言实现从键盘输入5个数求平均值的程序:
```assembly
.MODEL SMALL
.STACK 100H
.DATA
COUNT DB 5 ; 用于控制循环次数的计数器
SUM DW 0 ; 用于存储输入的5个数的总和
AVG DW 0 ; 用于存储计算出的平均值
PROMPT DB '请输入第$个数:$' ; 提示语句
.CODE
MAIN PROC
MOV AX, @DATA ; 初始化数据段寄存器
MOV DS, AX
MOV CX, COUNT ; 初始化计数器
MOV BX, 0 ; 初始化偏移量
; 循环读取输入的5个数
INPUT_LOOP:
INC BX
MOV DL, BL
ADD DL, '0'
MOV AH, 09H
MOV DX, OFFSET PROMPT
INT 21H
MOV AH, 01H
INT 21H
SUB AL, '0'
MOV AH, 0
MOV DL, 0AH
MOV DH, 00H
DIV DL
ADD SUM, AX
LOOP INPUT_LOOP
; 计算平均值并输出
MOV AX, SUM
MOV BX, COUNT
MOV DX, 0
DIV BX
MOV AVG, AX
MOV AX, AVG
CALL PRINT_NUM
MOV AH, 4CH ; 程序结束
INT 21H
MAIN ENDP
; 打印数字子程序
PRINT_NUM PROC
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV CX, 0 ; 初始化计数器
MOV BX, 10 ; 除数
; 计算位数
CALC_DIGIT:
INC CX
DIV BX
TEST AX, AX
JZ PRINT_LOOP
JMP CALC_DIGIT
; 打印数字
PRINT_LOOP:
XOR AH, AH
MOV DL, 0AH
DIV DL
ADD AX, '0'
PUSH AX
INC CX
TEST DX, DX
JZ PRINT_NUM
JMP PRINT_LOOP
; 输出数字
PRINT_NUM:
POP DX
MOV BX, 0 ; 初始化偏移量
MOV CX, 0 ; 初始化计数器
CMP AX, 0
JGE POSITIVE_NUM
NEG AX
MOV AH, 02H
MOV DL, '-'
INT 21H
POSITIVE_NUM:
CALL PRINT_NUM
POP DX
POP CX
POP BX
POP AX
RET
PRINT_NUM ENDP
END MAIN
```
这个程序的思路很简单,就是通过循环读取5个数并累加求和,最后再除以5计算平均值并输出。在读取每个数的时候,使用了一个字符串模板来输出提示语句,并根据计数器的值自动填充提示语句中的“$”符号。在输出数字的时候,使用了一个子程序来计算数字的位数并逐位输出。
阅读全文