哪位大侠可以用汇编语言编写一个程序实现以下功能啊?

编写程序实现从(05H、09H、01H、04H、08H、02H、03H、07H、06H、00H)中选出最大值并求上述十个数的平均值。
要求:选出最大值,并求平均值。要求采用子程序。得到的结果分别存放在特定空间。

;本人亲自写了一遍,已经上机验证过,绝对通过可以,加了些解析,希望对你有帮助,有问题可以和我联系

ASSUME CS:CODE,DS:DATA

DATA SEGMENT
DB 05H,09H,01H,04H,08H,02H,03H,07H,06H,00H
SAVE DB 16 DUP(?) ;结果存放的地方
DATA ENDS

CODE SEGMENT
START:
MOV AX,DATA
MOV DS,AX
MOV BH,05H
MOV SI,0
MOV CX,10
MOV DH,0
MOV AX,0

S:
MOV DL,DS:[SI]
ADD AX,DX
CMP BH,DS:[SI]
JB GO_OUT
INC SI
LOOP S
JMP HAOUT

GO_OUT:
MOV BH,DS:[SI]
INC SI
LOOP S

HAOUT:
MOV DI,OFFSET SAVE
MOV DS:[DI],BH ;把最大的数放到SAVE字段的第一个字节

MOV BL,10
DIV BL
MOV DS:[DI+1],AL;把平均数的整数部分放到SAVE字段的第二个字节
MOV DS:[DI+1],AH;把平均数的小数部分放到SAVE字段的第三个字节
MOV AX,4C00H
INT 21H
CODE ENDS
END START
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-11-14
ORG 0000H
LJMP START

ORG 0030H
SETB PSW.4
MOV R7, 00H
MOV R6, #10
LCALL MAX
MOV R5, A
LCALL AVERAGE

END
#################################
MAX: MOV A, R7
LOOP: INC R7
CJNE A, R7, CACLT
JMP LOOP
CACLT:JC LESS
DJNZ R6, LOOP
JMP STOP
LESS: MOV A,R7
DJNZ R6, LOOP
JMP STOP
STOP: RET
#############################
AVERAGE:MOV R7,00H
MOV R6,#9
MOV A, R7
LOOP1: INC R7
ADDC A, R7
DJNZ R6, LOOP1
MOV B, #10
DIV AB
RET
相似回答