帮我解释下这一很少断的汇编代码?谢谢啦 排列9个数的小算法 帮我注释下每行什么意思 最好给个例子解释下

2024年11月28日 17:40
有4个网友回答
网友(1):

画个内存图就很好理解了
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

网友(2):

这是典型的冒泡排序算法。但以上程序段实现的方法是“沉底法”-—就是每一次将最小的数排到数组最后。经程序计算后,9个数据是从大到小排列。

从JNB指令可知,以上程序只能排序无符号数。

JNB指令:一般用于无符号比较,比如前面会有个CMP指令。
JNB--->jump Not Below不小于则转移
*---------------
BX寄存器做状态器,如果在排序过程中,有交换动作,则重新排序。
CX寄存器是和LOOP指令结合使用的。具体可以看LOOP指令用法。

LOOP是循环指令,是由CX中的计数值控制循环次数的,当CX为0时结束循环。执行LOOP指令时,指令先CX=CX-1,再检查CX是否为0.如为0则结束循环。

网友(3):

类似于冒泡排序,,你可以百度下。。。这是最基本的一种排序方法。

网友(4):

明显的冒泡排序