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 ends
codes segment
assume cs:codes,ds:datas,ss:stacks
start:
mov ax,datas
mov ds,ax
mov cx,count-1
;外層迴圈陣列元素個數減一
xor dx,dx
loplev1:
xor si,si
push cx
;cx入棧
inc dx
;外迴圈一次dx加1
mov cx,count
;重新賦值cx進行下一輪迴圈
sub cx,dx
;內層迴圈次數減外層迴圈次數,相當於c語言中j-i-1
loplev2:
mov ax,a[si]
mov bx,a[si+2]
cmp ax,bx
;比較大小
jl i10
;ax大於bx執行下面交換,否則跳轉到i10
mov a[si],bx
mov a[si+2],ax
i10:
add si,2
loop loplev2
pop cx
loop loplev1
;--------------輸出按位輸出---------------------
mov si, 0
mov cx, count
lp:or ax, ax
mov dx,a[si]
add dx,30h
mov ah,2
int 21h
add si,2
loop lp
mov ah,4ch
int 21h
codes ends
end start
彙編 氣泡排序
在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 m...
彙編 氣泡排序。。。
最近在學習彙編,也發現自己好長時間沒寫部落格了,就更新乙個昨天用彙編寫的氣泡排序吧 上個星期五開始學的彙編,寫的較挫,望見諒 有bug還望提出,一起討論 data segment buf db 10,4,6,55,30,90,78,88,69 n buf data ends code segment...
彙編實現氣泡排序
感覺。實現一下還是有點意義的。用的是mips指令集,不造是不是過時了。然後參考資料 實現上不敢用保留暫存器,因為用完貌似需要恢復原暫存器的值,所以全部都用臨時暫存器的值 然後遇到了幾個問題 一 變數的定義 主要是在資料段裡幹,資料段用.data標識 然後定義方式是 變數名 變數型別 初始值 eg.a...