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