data segment
a dw 2, 5, 6, 8
l equ $-a
data ends
code segment
assume cs:code , ds:data
start:
mov cx, l
shr cx, 1 ; 邏輯迴圈右移指令,移動1位,相當於除以二
dec cx ;迴圈n-1次
loop1:
push cx
xor bx, bx ;兩個數進行異或運算,結果存放在目的運算元中;這相當於把bx制零
loop2:
mov ax, a[bx]
cmp ax, a[bx+2]
jng continue
;不大於則跳轉,否則交換;通過cf和zf判斷
xchg ax, a[bx+2]
;xchg 指令兩個運算元不能同時為記憶體變數
xchg ax, a[bx]
;也不能用段暫存器
continue:
inc bx ;一次操作乙個字,所以自增兩次
inc bx
loop loop2
pop cx
loop loop1
mov ax, 4c00h
int 21h
code ends
end start
彙編實現氣泡排序
感覺。實現一下還是有點意義的。用的是mips指令集,不造是不是過時了。然後參考資料 實現上不敢用保留暫存器,因為用完貌似需要恢復原暫存器的值,所以全部都用臨時暫存器的值 然後遇到了幾個問題 一 變數的定義 主要是在資料段裡幹,資料段用.data標識 然後定義方式是 變數名 變數型別 初始值 eg.a...
彙編 實現氣泡排序 講解
有乙個首位址為a的n字陣列,編寫程式採用氣泡排序使該陣列中的數按照從大到小的次序整序。資料儲存在a的陣列中 即記憶體中 我們需要利用氣泡排序實現從大到小排序。description data segment use16 a dw 8,16 41,22 50n equ a 2 data ends de...
for迴圈實現氣泡排序原理
演算法思想 氣泡排序屬於一種典型的交換排序。交換排序顧名思義就是通過元素的兩兩比較,判斷是否符合要求,如過不符合就交換位置來達到排序的目的。氣泡排序名字的由來就是因為在交換過程中,類似水冒泡,小 大 的元素經過不斷的交換由水底慢慢的浮到水的頂端。氣泡排序的思想就是利用的比較交換,利用迴圈將第 i 小...