题目
- 一个有符号字数组以0为结束标志,编程求这个数组的最大值、 最小值、平均值。
思路
一个一个比较就行了
代码
DATAS SEGMENT
;此处输入数据段代码
BUF DW 20
DW 30
DW 10
DW -10
DW -20
DW -30
DW 0
Len_BUF equ $-BUF
Max DW 0
Min DW 0
Average DW 0
DATAS ENDS
STACKS SEGMENT
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;数据初始化成数组第一个数
MOV SI,0
MOV BX,BUF[0]
MOV Max,BX
MOV BX,BUF[0]
MOV Min,BX
MOV BX,BUF[0]
MOV Average,BX
COM:
CMP SI,[Len_BUF-2];看是否到达数组的最后一位
JE Print
ADD SI,2
MOV BX,BUF[SI]
ADD Average,BX;求数组的和
CMP BX,Max
JG FindMax
CMP BX,Min
JL FindMin
JMP COM;循环找最值以及求和
FindMax:
MOV Max,BX
JMP COM
FindMin:
MOV Min,BX
JMP COM
Print:
;数组的和除以数据总数得到平均值
MOV AX,Average
MOV BL,[Len_BUF/2]
IDIV BL
;求平均值,商和余数分别放到Average的高位和低位
MOV Average,AX
MOV AH,4CH
INT 21H
CODES ENDS
END START