汇编语言上机考试三星题——求这个数组的最大值、 最小值、平均值

本文介绍如何使用编程语言处理一个以0为终止标志的有符号字数组,通过一系列指令计算并输出其最大值、最小值及平均值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 一个有符号字数组以0为结束标志,编程求这个数组的最大值、 最小值、平均值。
DATAS SEGMENT
    buf dw 100H,-90H,50H,0
    max dw 0
    min dw 0
    ave dw 0
    num dw 0
    buf1 db 'The maximum number is: ','$'
    buf2 db 0ah,'The minimum number is: ','$'
    buf3 db 0ah,'The average number is: ','$'
	;此处输入数据段代码  
DATAS ENDS

STACKS SEGMENT
    ;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    
    lea di,buf
    mov cx,10
    mov bx,0
    edg:
    	mov ax,[di]
    	cmp ax,0
    	je fpx
    	inc bx
	    inc di
	    inc di
    loop edg
    	fpx:
    	mov num,bx	;得知数据段长度

    	
    lea di,buf
    mov ax,[di]
    mov cx,num
    mov bx,0
    min1:
    	inc di
	    inc di
	    mov bx,[di]
    	cmp bx,0
    	je fpx1
    	cmp ax,bx
    	jl l2
    	mov ax,bx
    	l2: loop min1
    	fpx1:
    	mov min,ax	;得知数据段最小值
    
    
    
        LEA DX,buf2
    MOV AH,09H
    int 21H;输出最小值
        mov bx,min
       
    call output
    	MOV DL,0AH
	MOV AH,02H
	INT 21H ;回车换行
    
 ;----------------------------------------   
    lea di,buf
    mov ax,[di]
    mov cx,num
    mov bx,0

        max1:
    	inc di
	    inc di
	    mov bx,[di]
    	cmp bx,0
    	je edg1
    	cmp ax,bx
    	jg l1
    	mov ax,bx
    	l1: loop max1
    	edg1:
    	mov max,ax	;得知数据段最大值
    mov bx,ax
    LEA DX,buf1
    MOV AH,09H
    int 21H
    
    call output
    	MOV DL,0AH
	MOV AH,02H
	INT 21H ;回车换行
    ;输出最大值
    
    
    
    
  ;----------------------------------------     
    
    
    
    lea di,buf
    mov ax,[di]
    mov cx,num
    mov bx,0
    ave1:
    	inc di
	    inc di
	    mov bx,[di]
    	cmp bx,0
    	je rng1
    	adc ax,bx
    	loop ave1
    	rng1:
    	mov dx,0
    	mov cx,num
    	idiv cx
    	mov ave,ax	;得知数据段平均值   
    	


		mov bx,ave
        LEA DX,buf3
    MOV AH,09H
    int 21H
        mov bx,ave
    call output
    	MOV DL,0AH
	MOV AH,02H
	INT 21H ;回车换行
    MOV AH,4CH
    INT 21H;输出平均值
    
output proc near

	MOV AL,BH
	MOV AH,0
	MOV DL,10H
	DIV DL
	ADD AX,3030H
	mov cx,ax
	CMP AL,3AH
	JB FPX2
	ADD AL,07H
	FPX2:
		MOV DL,AL
		MOV AH,02H
		INT 21H
	mov al,ch
	CMP AL,3AH
	JB LNG
	ADD AL,07H
	LNG:
		MOV DL,AL
		MOV AH,02H
		INT 21H		;打印高位字节
	
	
	MOV AL,BL
	MOV AH,0
	MOV dL,10H
	DIV dL
	ADD AX,3030H
	mov cx,ax
	CMP AL,3AH
	JB IG
	ADD AL,07H
	IG:
		MOV DL,AL
		MOV AH,02H
		INT 21H
	mov al,ch
	CMP AL,3AH
	JB RNG
	ADD AL,07H
	RNG:
		MOV DL,AL
		MOV AH,02H
		INT 21H		;打印低位字节
		
	ret
output endp
CODES ENDS
    END START






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值