汇编语言:冒泡排序算法将10个数按从小到大顺序排列
匯編語(yǔ)言:冒泡排序算法
題目描述
自定義一組有首地址為data的10個(gè)字的數(shù)組,請(qǐng)利用冒泡排序算法來(lái)編寫(xiě)程序,使該數(shù)組中的數(shù)按照從小到大的次序有序化。(注:10個(gè)字可以自己定義。)
冒泡排序是一種較為簡(jiǎn)單的排序算法,需要使用嵌套循環(huán)。每一個(gè)外循環(huán)會(huì)將未排序數(shù)據(jù)中的最大值排到末尾,每一個(gè)小循環(huán)會(huì)將相鄰兩個(gè)數(shù)比較大小,從而使較大的數(shù)下沉,較小的數(shù)上浮。
本題中,我們需要使用條件轉(zhuǎn)移指令,比較指令(CMP),交換指令(XCHG)。值得一提的是,CMP和XCHG的兩個(gè)操作數(shù)不能同時(shí)為內(nèi)存中的數(shù)據(jù),但可以一個(gè)是寄存器,一個(gè)是內(nèi)存數(shù)據(jù)。所以,在比較和交換數(shù)據(jù)的時(shí)候,我們需要將其中一個(gè)內(nèi)存數(shù)據(jù)放到寄存器中。
(代碼中有注釋,可直接看代碼)
思路:
將循環(huán)次數(shù)放入CX(設(shè)需要排序的數(shù)據(jù)有N個(gè),則需要執(zhí)行N-1個(gè)循環(huán),即此時(shí)應(yīng)MOV CX,9)。
1.CX-1判斷CX是否符合循環(huán)條件,當(dāng)CX=0時(shí),程序結(jié)束;否則,SI置零,BX置2倍的CX作為小循環(huán)的判斷條件(若數(shù)據(jù)使用DB定義則無(wú)需使用BX,可直接使用CX);
2.將DATA1[SI]放入AX寄存器中,并與DATA1[SI+2]作比較(由于本體數(shù)據(jù)定義時(shí)DW,所以用+2,若使用DB定義數(shù)據(jù)則應(yīng)+1),若小于等于,則執(zhí)行第3步;否則交換DATA1[SI]和DATA1[SI+2];
3.比較SI和BX,相等時(shí)執(zhí)行第1步,否則,SI+2,跳轉(zhuǎn)到第二步。
以上就是一個(gè)較為簡(jiǎn)單的冒泡排序法步驟,接下來(lái)看代碼:
排序結(jié)果
冒泡排序前運(yùn)行前內(nèi)存數(shù)據(jù)內(nèi)容:
冒泡排序后:
冒泡排序運(yùn)行正確,此題目完成!
總結(jié)
以上是生活随笔為你收集整理的汇编语言:冒泡排序算法将10个数按从小到大顺序排列的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Python入门字符串
- 下一篇: 学习笔记-----关于VS中使用模板类出