汇编语言 找出数组中的最大值和最小值,并以十进制的形式输出存放到max中

题目:
编程将数组array中存放的若干个十进制的最大值找出来并且存放到max。array及max、min的定义如下:
array db 8,68,15,22,37,6,58,48,96,2,4,109
max db?
min db?
代码如下:
DATA SEGMENT
array db 8,68,15,22,37,6,58,48,96,2,4,109

NUM dw $-array

max db?

min db?

STRING1 db’The max number is:’,’$’

STRING2 db 0dh,0ah, ‘The min number
is:’,’$’

DATA ENDS

STACK SEGMENT
STACK ENDS

CODE SEGMENT
ASSUME
CS:CODE,DS:DATA,SS:STACK
START:
MOV AX,DATA
MOV DS,AX ;设置DS

MOV CX,NUM-1 ;设置循环次数

LEA SI,array ;取NUMBER偏移地址给SI指针

MOV BL,[SI] ;取第一个数为最小值

MOV BH,[SI] ;取第一个数为最大值

L: INC SI ;指针加一

MOV AL,[SI] ;取第二个数到AL

CMP AL,BL ;比较当前数与最小值

JB X2 ;当前数小于最小值则跳转

CMP AL,BH ;否则比较当前数与最大值

JBE X1 ;当前数小于等于最大值则跳转

MOV BH,AL ;当前数比最大值大,AL->BH

X1: LOOP L ;根据CX的值判断是否继续循环

MOV MAX,BH ;把最大值存放到MAX

MOV MIN,BL ;把最小值存放到MIN

;在此处调用子程序
LEA DX,STRING1 ;输出提示1

MOV AH,09H

INT 21H

LEA SI,MAX ;使SI指向要传递的参数

CALL disp ;调用子程序

LEA DX,STRING2 ;输出提示2

MOV AH,09H

INT 21H

LEA SI,MIN ;使SI指向要传递的参数

CALL disp ;调用子程序

DONE: MOV AH,4CH
INT 21H
X2: MOV BL,AL
JMP X1

disp PROC
;子程序定义,子程序名为disp
;功能:以十进制显示AX寄存器中的数值

PUSH BX
PUSH CX
PUSH DX
MOV BL,10
MOV CL,0
CMP AX,10
JB PRINTF
W: DIV BL
PUSH AX
INC CL
MOV AH,0
CMP AX,0
JA W
p: POP DX
DEC CL
MOV DL,DH
ADD DL,48
MOV AH,2
INT 21H
CMP CL,0
JNE P
POP BX
POP CX
POP DX
RET
PRINTF: MOV DL,AL
ADD DL,48
MOV AH,2
INT 21H
POP BX
POP CX
POP DX
RET
disp ENDP
CODE ENDS
END START

  • 2
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jo(读研版)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值