汇编语言上机考试28题(***)一个有符号字数组以0为结束标志,编程求这个数组的最大值、 最小值、平均值。

汇编语言上机考试28题(***)

题目

  1. 一个有符号字数组以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

结果

结果

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值