DATA SEGMENT
TABLE DB 10,9,4,6,12,1,4,13,15,11
NUM EQU ($-TABLE)-1 ;冒泡排序次数为元素个数n-1
DATA ENDS
CODE SEGMENT
ASSUME: CS:CODE, DS:DATA
START:MOV AX, DATA
MOV DS, AX
MOV CX, NUM
LEA SI, TABLE ;地址指针SI指向TABLE储存区首地址
MOV BH, [SI] ;将第一个数放入BH,保存当前最大值
MOV BL, [SI] ;第一个数放入BL,保存当前最小值
CALL FIND ;调用子程序查找最大值和最小值
MOV AL, BH
CALL PRINT ;调用显示子函数
MOV AL, BL
CALL PRINT
MOV AH, 4CH
INT 21H ;返回操作系统
FIND PROC NEAR
L: INC SI ;指针SI移动到下一个数
MOV AL, [SI]
CMP AL, BL ;与BL比较大小
JB NEXT1 ;AL小于BL跳转
CMP AL, BH ;与BH比较大小
JB NEXT2 ;AL小于则BH跳转
MOV BH, AL ;否则BH替换为更大的值
JMP NEXT2
NEXT1:MOV BL, AL ;BL替换为更小的值
JMP NEXT2
NEXT2:LOOP L ;查看循环是否停止
RET
FIND ENDP
PRINT PROC NEAR ;显示子程序
PUSH DX
AND AL, 0FH ;首先取低四位
MOV DL, AL
CMP DL, 9 ;判断是否<=9
JLE DISP ;若是则为‘0’~ ‘9’,ASCII码加30H
ADD DL, 7 ;若不是则为‘A’~ ‘F’,ASCII码加37H
DISP: ADD DL, 30H
MOV AH, 02H ;显示
INT 21H
MOV DX, 0DH ;加回车符
INT 21H
MOV DL, 0AH ;加换行符
INT 21H
POP DX
RET ;子程序返回
PRINT ENDP
CODE ENDS
END START
汇编程序:查找给出数组中的最大最小值
最新推荐文章于 2022-07-12 20:22:16 发布
1279

被折叠的 条评论
为什么被折叠?



