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

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
相似回答