1 ;=============================== 2 ;循环程序设计 3 ;条件转移指令实现 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 N equ 16 ;待排序的个数 14 DATAS ends 15 CODES SEGMENT 16 ASSUME CS:CODES, DS:DATAS 17 START: 18 mov AX,8000H ;待排序的内容的段地址 19 mov DS,AX 20 21 mov bx,-1 22 mov si,1 23 24 flag1: 25 mov di,0 26 27 flag2: 28 mov al,[bx+di] 29 cmp al,[bx+di+1] 30 ja next1 ;大于 31 xchg al,[bx+di+1] 32 mov [bx+di],al ;交换 33 next1: 34 inc di 35 xor cx,cx 36 mov cx,N-1 37 sub cx,si 38 cmp di,cx 39 jbe flag2 40 41 next2: 42 inc si 43 cmp si,N-1 44 jbe flag1 45 46 exit: 47 mov ah,4ch 48 int 21H 49 CODES ends 50 end START 51 ;===============================