1 ;=============================== 2 ;循環程序設計 3 ;loop指令實現 4 ;冒泡排序 5 ;for(int i=0;i<N;i++){ 6 ; for(int h=0;j<N-1-i>;j++){ 7 ; if(array[j]>array[j+1]){ 8 ; exchange(array[j],array[j+1]); 9 ; } 10 ; } 11 ;} 12 DATAS SEGMENT 13 buffer db 12,3,6,23,54,121,99,100,46,23 ;待排序的10個數 14 DATAS ends 15 CODES SEGMENT 16 ASSUME CS:CODES, DS:DATAS 17 START: 18 mov AX,DATAS ;待排序的內容的段地址 19 mov DS,AX 20 21 mov bx,offset buffer ;待排序的內容的偏移地址 22 mov si,0 ;外層循環起始下標0 23 xor cx,cx 24 mov cl,10 ;設置外層循環次數 25 26 flag1: 27 mov di,0 ;內層循環起始地址下標0 28 push cx ;cx次數壓棧 29 flag2: 30 mov al,[bx+di] 31 cmp al,[bx+di+1] 32 ja next1 ;大於 33 xchg al,[bx+di+1] 34 mov [bx+di],al ;交換 35 next1: 36 inc di 37 loop flag2 38 pop cx ;內層循環完畢時 出棧 39 next2: 40 inc si 41 loop flag1 42 43 exit: 44 mov ah,4ch 45 int 21H 46 CODES ends 47 end START 48 ;=====================