选择排序原理:
每一趟先找出最小值,直至找到正确顺序。
注意不要和冒泡的原理混淆,传送门:dos汇编练习(2)——冒泡法排序完整版
DATA SEGMENT
VAR DB 12H,43H,34H,2H,200,3FH,3EH,1,120,5EH
VARLEN EQU $-VAR
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX ;导入数据段数据
MOV CX,VARLEN ;装填计数初值
DEC CX ;实际循环次数为N-1次
MOV BX,OFFSET VAR ;取全局变量首地址,即将标号VAR的地址存入BX,MOV BX,0000
;故查看结果时用DDS:0命令
WAI:
MOV SI,BX ;分别存入SI,DI
MOV DI,BX
PUSH CX
MOV AL,[BX] ;将初值存入AL
NEI: ;内层循环找出每一趟的最小值
INC SI
CMP AL,[SI]
JBE NEXT ;若(AL)<=[SI],则不交换
MOV AL,[SI] ;否则,将每一趟找到的最小值先放入AL
MOV DI,SI ;SI和DI+1
NEXT:
LOOP NEI
XCHG AL,[BX] ;一趟比较过后,将首址0000中与AL中找到的最小值交换
XCHG AL,[DI] ;,防止排序前第一值被覆盖
INC BX
POP CX
LOOP WAI
EXIT:
MOV AH,4CH
INT 21H
CODE ENDS
END START
排序前:
每趟先找出最小值:
直至找到正确顺序:
最终排序后: