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 ;=====================
"你的指尖,擁有改變世界的力量! "
歡迎關注我的個人部落格:https://sugarat.top