已知在首地址为DATA的字数组中存放一系列有符号数(首元素为数据个数), 出它们的平均值放在变量AVER中,并求出数组中有多少个数大于该平均值,将大于平均值的元素个数保存 在变量COUNT中。

已知在首地址为DATA的字数组中存放一系列有符号数(首元素为数据个数),试编写一个程序求出它们的平均值放在变量AVER中,并求出数组中有多少个数大于该平均值,将大于平均值的元素个数保存在变量COUNT中。(注意,这些数据的累加和可能超出-32768~32767之间)

DATA1 SEGMENT
     DATA DW 10,1,2,3,4,5,6,-7,-8,-9,10
	 AVER DW 5
	 COUNT DW ?
DATA1 ENDS

STACK SEGMENT
      DW 10 DUP(?)
TOP LABEL WORD
STACK ENDS	  

CODE SEGMENT
   ASSUME CS:CODE,SS:STACK,DS:DATA1 
MAIN PROC FAR
     MOV AX,STACK
	 MOV SS,AX
	 LEA SP,TOP
	 MOV AX,DATA1 
	 MOV DS,AX	
	 LEA SI,DATA 
	 MOV CX,[SI]
	 ADD SI,2
	 PUSH SI 
	 PUSH CX 
	 MOV BX,0
	 MOV DX,0
	 CLD 
  L1:LODSW
     CMP AX,0
     JL L
	 ADD BX,AX
	 ADC DX,0
	 JMP L4
  L:NEG AX
    SUB BX,AX
    SBB DX,0
  L4:LOOP L1
	 POP CX 
	 MOV AX,BX
	 IDIV CX 
	 MOV AVER,AX
	 POP SI 
	 MOV DX,0 
	 CLD 
  L2:LODSW
     CMP AX,AVER
	 JNG L3 
	 INC DX 
  L3:LOOP L2 
     MOV COUNT,DX
	 MOV AH,4CH
	 INT 21H
MAIN ENDP 
CODE ENDS 
     END MAIN 
注意知识点:

(1)求平均数,求和时要先判断是争还是负在进行加减法,不能直接用加法。
(2)求平均时,直接用有符号除法,比较大小也是用有符号比较。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值