画个内存图就很好理解了
buf=999 12 98 65 71 99 0 24 0 0
buf[di] =999
buf[di+1] = 12
buf[di] >= buf[di+1]
交换
buf=12 999 98 65 71 99 0 24 0 0
di=di+1
循环 又从loop1:开始了
buf[di]=999 buf[di+1] = 98
这是典型的冒泡排序算法。但以上程序段实现的方法是“沉底法”-—就是每一次将最小的数排到数组最后。经程序计算后,9个数据是从大到小排列。
从JNB指令可知,以上程序只能排序无符号数。
JNB指令:一般用于无符号比较,比如前面会有个CMP指令。
JNB--->jump Not Below不小于则转移
*---------------
BX寄存器做状态器,如果在排序过程中,有交换动作,则重新排序。
CX寄存器是和LOOP指令结合使用的。具体可以看LOOP指令用法。
LOOP是循环指令,是由CX中的计数值控制循环次数的,当CX为0时结束循环。执行LOOP指令时,指令先CX=CX-1,再检查CX是否为0.如为0则结束循环。
类似于冒泡排序,,你可以百度下。。。这是最基本的一种排序方法。
明显的冒泡排序