用汇编写改进的冒泡排序

实现的排序的次数输出和排完序后数组的输出

DATAS SEGMENT



    aa db 0,1,2,4,3,5,6,7,8,9



    temp db ?



DATAS ENDS



CODES SEGMENT



    ASSUME CS:CODES,DS:DATAS,SS:DATAS



START:



    MOV AX,DATAS



    MOV DS,AX



    mov bx,9;设置外层循环最大次数



    xor dl,dl;dl作为记录进行了几趟排序,初始化为0



    mov temp,10h;temp判断排序是否完成,初始化为非零数



p1:



       cmp temp,0;判断temp是否为0



       jz p4;temp为0,则跳转结束循环



    mov temp,0       ;每趟外循环,都将temp设置为0



       mov cx,bx;设置内层循环次数



       lea di,aa



p2:



       mov al,[di];取出数据



       cmp al,[di+1];和下一个数据比较



       jle p3;<=跳转



       mov temp,1;交换2个数,就将temp设置为1



       xchg al,[di+1];交换2数



       mov [di],al



p3:



       inc di;di指向下个数据



       loop p2;继续本趟排序



       inc dl;计数+1



       dec bx;外层循环-1



       jnz p1;进行下趟排序



p4:



       add dl,'0';输出进行排序次数



       mov ah,2



       int 21h



       lea di,aa



       mov cx,10



       mov dl,10



       mov ah,2



       int 21h



p5:



       mov dl,[di];输出数组



       add dl,'0'



       mov ah,2



       int 21h



       inc di



       mov dl,' '



       mov ah,2



       int 21h



       loop p5



    MOV AH,4CH



    INT 21H



CODES ENDS



END START
View Code

 

你可能感兴趣的:(冒泡排序)