汇编语言找最大值最小值,这个程序只能求出最大值,怎么改才能把最小值也求出来啊???

DATA SEGMENT
BUFF DB 5,9,3,7,2
MAX DB ?
MIN DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV SI,0
MOV CX,OFFSET MAX
MOV BX,OFFSET BUFF
SUB CX,BX
MOV AL,[SI]
MOV MAX,AL
MOV BL,[SI]
MOV MIN,BL
LOOP1: MOV AL,[SI]
CMP MAX,AL
JAE NEXT1
MOV MAX,AL
MOV BL,[SI]
CMP MIN,BL
JNB NEXT2
MOV MIN,BL
NEXT1:
NEXT2: INC SI
LOOP LOOP1
MOV DL,MAX
ADD DL,30H
MOV AH,02H
INT 21H
MOV DL,MIN
ADD DL,30H
MOV AH,02H
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START

第1个回答  2013-12-09
稍修改即可:
LOOP1:MOV AL,[SI]
CMP MAX,AL
JAE NEXT11
MOV MAX,AL
NEXT11:
MOV BL,[SI]
CMP MIN,BL
JNBN EXT2
MOV MIN,BL
NEXT1:追问

怎么出来的最小值和最大值一样都是9啊???

追答

已修改调试好,完整程序如下:

 

DATA  SEGMENT

BUFF DB 5,9,3,7,2

MAX DB ?

MIN DB ?

DATA ENDS

CODE SEGMENT

 ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

 MOV DS,AX

 MOV SI,0

 MOV CX,OFFSET MAX

 MOV BX,OFFSET BUFF

 SUB CX,BX

 MOV AL,[SI]

 MOV MAX,AL

 MOV BL,[SI]

 MOV MIN,BL

LOOP1: MOV AL,[SI]

 CMP MAX,AL

 Ja NEXT11

 MOV MAX,AL

next11:

 MOV BL,[SI]

 CMP MIN,BL

 Jb NEXT2

 MOV MIN,BL

NEXT1:

NEXT2: INC  SI

 LOOP  LOOP1

 MOV DL,MAX

 ADD DL,30H

 MOV AH,02H

 INT 21H

 MOV DL,MIN

 ADD DL,30H

 MOV AH,02H

 INT 21H

 MOV  AH,4CH

 INT 21H

CODE ENDS

 END START

本回答被提问者采纳
第2个回答  2013-12-11
jg改成jl即可
第3个回答  2013-12-09

VB给出一个矩阵,找出最大值,最小值,并求出其下标。
Print Tab(1); "最大值为:" & Max ,"位置在:";maxp.x & "," & maxp.Y Print "最小值为:" & Min ,"位置在:";minp.x & "," & minp.Y

用C语言怎么编写程序求出最大值?
(2)让剩下的那个数和上一步赋给的最大值比较,将较大的数赋值给max;(3)输出最大值。具体程序如下:include <stdio.h>int main(void){ int a,b,c;scanf("%d %d %d",&a,&b,&c); \/\/ 输入3个数int max = a; \/\/默认最大值为aif(max<b)max = b; \/\/选出a,b中...

...程序,对输入的四个整数,求出其中的最大值和最小值
main(){ int a,b,c,d,max,min;scanf("%d,%d,%d,%d",&a,&b,&c,&d);max = a;min = a;if(b>max) max = b;if(c>max) max = c;if(d>max) max = d;if(b<min) min = b;if(c<min) min = c;if(d<min) min = d;printf("max=%d,min=%d",max,min);} ...

C语言:为什么求最大值的程序我的一直出来的是第一个数
按照你的scanf的格式设计,你输入的三个数之间需要用逗号分隔,大概你没有这样做 建议格式字符串写成"%d%d%d"这样默认空格分隔

c语言编程实现,从键盘上输入8个数,求出最大值和最小值用指针传递数组...
max and min using the function findMaxMin(arr, 8, &max, &min);\/\/ Output the results printf("Maximum value = %d\\n", max);printf("Minimum value = %d\\n", min);return 0;} 这段 C 语言代码实现了从键盘上输入 8 个数,并使用指针传递数组来找到这些数中的最大值和最小值。

python编写程序,利用元组作为函数的返回值,求系列类型的最大值...
1、首先,定义一个数组,初值为0。2、用for循环,控制输入整数的个数。3、将输入的整数,保存在数组中。4、用函数min判断输入整数的最小值,保存到变量中。5、然后,用函数max判断输入整数的最大值,保存在变量中。6、最后,输出整数中的最小值和最大值。7、运行程序,输入三个一位整数,电脑会...

EXCEL取指定条件的大值和最小值,为什么最大值能求出,最小值去不行
因为这个数组计算会产生很多零,在MAX的情况下是能被排除的,但是,MIN就排除不了,楼上的公式就是把那些不等于的用户名的数值置一个极大的数,而由Min来淘汰。不过,当名字找不到时,会出现一个奇怪的值

C语言 for语句循环求N个数的最大值最小值 平均值 出现错误
include <stdio.h>#include <conio.h>#define ARR_LEN 255int main (void) {int i, n, min, max;int salary[ARR_LEN]; \/* 需要存储多名员工的薪资,所以要用到数组 *\/float average; \/* 平均值最好定义为浮点数 *\/int all = 0;printf ("请输入员工数\\n");scanf ("%d", &n);...

EXCEL 函数 一个数字,在某个范围内,分别求出最大值最小值
可以使用IF嵌套函数,范围多了,也可以使用对照表,从表中提取范围,再用公式。最小:=A1*IF(A1<50,0.95,IF(A1<100,0.98,1))最大:=A1*IF(A1<50,1.1,IF(A1<100,1.05,1))

...使用指针求出一维整型数组,数组自定,求出最大值及其下标并输出_百 ...
include<stdio.h>#define ARRAY_LEN 100int main(void) {int arr[ARRAY_LEN],len,i,*p=arr,*max=arr;printf("请输入初始数组元素个数:");scanf("%d",&len); printf ("\\n"); printf ("===\\n\\n"); printf("请输入数组内容,共%d个元素: ",len);for(i=0; i<len; p...

相似回答