汇编语言:数据排序
来源:百度知道 编辑:UC知道 时间:2024/06/05 21:51:47
; 下面的程序是16位汇编,以11个十进制数-112,56,72,98,32,-65,118,83,108,125,67(对应的十六进制数:90H,38H,48H,62H,20H,0BFH,76H,53H,6CH,7DH,43H)为例,编译通过,运行正确。
; Program Name: Bubbling.ASM
Bubbling SEGMENT
ASSUME CS:Bubbling,DS:Bubbling,ES:Bubbling
ORG 100H
Start: MOV CX,Elem_Num
Scanning: PUSH CX ;入栈保存外循环次数
LEA SI,Array ;数组首地址装入源变址寄存器
Compare: PUSH SI
POP DI ;当前数组元素地址赋给目的变址寄存器,以备交换之用
LODSB ;将当前数组元素读入累加器
CMP AL,[SI] ;当前数组元素与相邻的下一个数组元素相比较
JGE NextOne ;若小于或等于,不作数据交换,处理下一个数组元素
XCHG AL,[SI] ;若大于,交换数组元素
STOSB ;保存数值较小者
NextOne: LOOP Compare ;处理下一个数组元素
POP CX ;外循环次数出栈
LOOP Scanning ;下一趟比较
Exit_Proc:MOV AX,4C00H ;结束程序
INT 21H
ORG 4000H
Array DB -112,56,72,98,32,-65,118,83,108,125,67 ;需要排序的数据
Elem_Num EQU ($-Array)/TYPE Array-1 ;外循环次数
Bubbling ENDS
END