purpose:
there are 64 students. each has a unique id,which consists of two integer. given id1 = (a1, a2) and id2 = (b1, b2), then ifa1 > b1, then id1 > id2; if a1 = b1, then: if a2 > b2, then id1 >id2; if a2 = b2, then id1 = id2; if a2 < b2, then id1 < id2; if a1
principles:
1. 將輸入位置的的內容複製到輸出位置
2. 在輸出位址原處進行氣泡排序,具體見下面**分析中的內外兩個迴圈
3. 兩個數字比較大小的方法是對其中乙個·數字取反加一,然後將至與另外乙個數字相加,判斷結果的正負,然後據此使用br 指令進行選擇跳轉
procedure:
**分析:
.orig x3000
ld r2,input
ld r3,output
again ldr r4,r2,#0
str r4,r3,#0
add r2,r2,#1
add r3,r3,#1
ld r4,inpute
not r4,r4
add r4,r4,#1
add r4,r4,r2
brnz again ;將輸入全部複製到輸出位置,最終 r3 儲存 outputendqi+1 位置
bagain add r3,r3,#-2 ;然後進行氣泡排序(如下),bagain 為外迴圈
ld r4,output
not r4,r4
add r4,r4,#1
add r4,r4,r3
brz over
ld r2,output ;判斷 bagain 是否結束
add r2,r2,#-2
sagain add r2,r2,#2
add r4,r3,#0
not r4,r4 ;sagain 為內迴圈
add r4,r4,#1
add r4,r4,r2
brz bagain
ldr r4,r2,#0
ldr r5,r2,#2
not r4,r4
add r4,r4,#1
add r5,r4,r5
brn sagain
brz cmp ;如果兩個元素中第乙個數相等,則進行第二數字的比較
brp swap ;如果前乙個元素小於後乙個,則交換二者位置
cmp ldr r4,r2,#1
ldr r5,r2,#3
not r4,r4
add r4,r4,#1
add r5,r4,r5
brnz sagain
brp swap
swap ldr r4,r2,#0 ;實現對相鄰元素的交換
ldr r5,r2,#2
str r4,r2,#2
str r5,r2,#0
ldr r4,r2,#1
ldr r5,r2,#3
str r4,r2,#3
str r5,r2,#1
brnzp sagain
over halt
input .fill x3200
inpute .fill x327f
output .fill x4000
.end
result:
結果測試;匯入 data.obj 檔案
資料如下(部分):內容均為符號位擴充套件後表示
結果:
驗證可知結果正確
some thoughts:
本實驗中採用的比較排序法,是一種一種效率較低的排序方法。原先擬使用快速排序,苦於不知怎樣較好地實現遞迴,而非遞迴寫法又較為複雜。考慮到本實驗資料規模較小,暫且使用氣泡排序。
音訊LC3編碼演算法資料
目前針對ble標準的lc3詳細描述尚未公布,但是lc3音訊編碼方式的演算法是現有的方法,下面是我找到的pdf 演算法描述 和 資料 lc3編碼器,c語言實現 lc3的有關描述 開發新的lc3 lc3plus音訊編解碼器是為了解決當今無線通訊平台 例如藍芽和數字增強型無繩電信 dect 中存在的重大缺...
彙編實現氣泡排序
感覺。實現一下還是有點意義的。用的是mips指令集,不造是不是過時了。然後參考資料 實現上不敢用保留暫存器,因為用完貌似需要恢復原暫存器的值,所以全部都用臨時暫存器的值 然後遇到了幾個問題 一 變數的定義 主要是在資料段裡幹,資料段用.data標識 然後定義方式是 變數名 變數型別 初始值 eg.a...
阿里雲在LC3大會上透露未來要做的兩件事
6月25日,由lfasia,llc主辦的全球開源頂級盛會linuxcon containercon cloudopen lc3 在北京國家會議中心召開。來自國內外的開發人員 架構師 系統管理員 devops專家 商業領袖等數千名專業人士匯聚一堂。img 1684 阿里雲研究員褚霸在大會當天同多位業界...