在首地址为DATA的字数组中,存放了100H个16位补码数 ;编写程序,求出它们的平均值放在AX中;并求出数组中有多少个数 ;小于此平均值,将结果放在BX中

版权声明: https://blog.csdn.net/weixin_42000150/article/details/80659522
;在首地址为DATA的字数组中,存放了100H个16位补码数
;编写程序,求出它们的平均值放在AX中;并求出数组中有多少个数
;小于此平均值,将结果放在BX中
DATAS SEGMENT
DATA DW 1,2,3,4,5,6,7,8,9,5
COUNT DW ($-DATA)/2
CRLF  DB 0AH,0DH,'$'
DATAS ENDS


STACK SEGMENT PARA STACK
      DW 128 DUP(?)
TOP   LABEL WORD
STACK ENDS


CODE SEGMENT
     ASSUME CS:CODE,SS:STACK,DS:DATAS
MAIN PROC FAR
START:
         MOV AX,DATAS
MOV DS,AX
 
MOV AX,STACK
MOV SS,AX
LEA SP,TOP
 
LEA SI,DATA
MOV CX,COUNT
 
XOR AX,AX          ;清零AX,DX用于存放累加结果和被除数
XOR DX,DX
 
L1: MOV BX,[SI]        ;累加
ADD AX,BX
ADD SI,2
LOOP L1
 
MOV BX,COUNT       ;求平均值
DIV BX
XOR BX,BX
 
MOV CX,COUNT
LEA SI,DATA
L3: MOV DX,[SI]         ;求小于平均值的数的个数
CMP AX,DX
JLE L2
INC BX
L2:    ADD SI,2
         LOOP L3
 
MOV DL,AL          ;用于测试结果正确与否,与程序本身无关
ADD DL,30H
MOV AH,2
INT 21H
 
MOV AH,9
LEA DX,CRLF
INT 21H
 
MOV DL,BL
ADD DL,30H
MOV AH,2
INT 21H
 
MOV AH,4CH
INT 21H
CODE ENDS
MAIN ENDP
     END START

猜你喜欢

转载自blog.csdn.net/weixin_42000150/article/details/80659522