彙編 氣泡排序

2021-06-05 16:06:07 字數 890 閱讀 7556

** 在emu8086除錯過

assume cs:code,ds:data

data segment

array dw 49,38,65,97,76,13,27     ;要排序的數

count dw ($-array)/2     ;獲取排序數目

data ends

code segment    

start:mov ax,data

mov es,ax  

mov ds,ax   

retry:cmp count,1    ;是否迴圈排序過count-1次

je exit

dec count

mov cx,count

mov si,offset array

cldnext1:lodsw

cmp ax,[si]

jle next2     

xchg ax,[si]

xchg ax,[si-2]

next2:loop next1

jmp short retry  

exit:mov ax,4c00h  :程式結束

int 21h

code ends

end start

每次排序依次找到最大的數,第二大的數。。。以此類推。程式解釋:

lodsw 將ds:[si]的字單元內容給ax,並且將si加2或減2,此程式中由於設定了cld,所以每次si都自動加2;

jle 和cmp配合使用,判斷low and equal,就是小於或等於,即運算元1小於或等於運算元2就執行跳轉,否則順序執行;

xchg 互換指令,即將ax和[si]中的內容互換,該指令不影響標誌位。

最後執行結果可以通過檢視記憶體的方式驗證,這裡就不輸出到前端了。

彙編 氣泡排序。。。

最近在學習彙編,也發現自己好長時間沒寫部落格了,就更新乙個昨天用彙編寫的氣泡排序吧 上個星期五開始學的彙編,寫的較挫,望見諒 有bug還望提出,一起討論 data segment buf db 10,4,6,55,30,90,78,88,69 n buf data ends code segment...

彙編氣泡排序

datas segment a dw 0,23h,19h,20h,32h,89h,12h,34h,38h,33h,45h,13h,43h,24h,54h,1 count equ a 2 陣列中元素的個數 位元組 datas ends stacks segment 此處輸入堆疊段 stacks end...

彙編實現氣泡排序

感覺。實現一下還是有點意義的。用的是mips指令集,不造是不是過時了。然後參考資料 實現上不敢用保留暫存器,因為用完貌似需要恢復原暫存器的值,所以全部都用臨時暫存器的值 然後遇到了幾個問題 一 變數的定義 主要是在資料段裡幹,資料段用.data標識 然後定義方式是 變數名 變數型別 初始值 eg.a...