请用冒泡排序法编程将内存ARRAY单元开始存储的一组8位带符号数据按从大到小排列 :
冒泡法:N个数要进行N-1趟。第一趟从第一个开始一次对相邻两个数进行比较,若数的大小次序错误,则交换,否则不作任何操作。进行N-1次比较结束时,最小数排在最后。然后,进行第二趟,只需要进行N-2次比较,就可排好次小数。第三趟,进行N-3次比较,………依次类推。
代码:
DATA SEGMENT
NUM DB 5,9,8,7,3,15
LEN EQU $-NUM
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV CX,LEN
DEC CX ;CX←比较趟数,即外循环次数
LOP1: MOV DX,CX ; 保存外循环次数在DX,内循环比较次数在CX中。
MOV SI,0
LOP2:
MOV AL,NUM[SI]
CMP AL,ANUM[SI+1] ;相邻两数据比较
JAE CONT
XCHG AL,NUM[SI+1]
MOV NUM[SI],AL
CONT :
INC SI ;修改数据地址指针
LOOP LOP2 ; 内循环结束
MOV CX,DX ;恢复外循环计数值
LOOP LOP1 ;外循环是否结束
MOV AH,4CH
INT 21H
CODE ENDS
END START
1+
One thought on “汇编语言——冒泡排序”