实现的排序的次数输出和排完序后数组的输出
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