嵌入式初學者,這學期剛開課,學起來感覺很不錯。
第乙個累加和的原始碼:
area text,code,readwrite
entry
mov r0,#100 ;迴圈數目
mov r1,#0 ;初始化資料
loop
add r1,r1,r0 ;將資料進行相加,獲得最後的資料
subs r0,r0,#1 ;迴圈資料r0減去1
cmp r0,#0 ;將r0與0比較看迴圈是否結束
bne loop ;判斷迴圈是否結束,接受則進行下面的步驟
ldr r2,=result
str r1,[r2]
result
dcd 0
stop
b stop
第二個排序的原始碼附上:
;排列演算法:先將所有的資料與第乙個進行比較,最後取出最小的資料放到第乙個記憶體單元中
;然後再從第二個記憶體單元開始進行比較,將第二小的資料放到第二個記憶體單元中,
;以此內推則能將十個資料進行排列。
area text,code,readwrite
entry
ldr r0,=data ;獲得data資料的起始位址
mov r1,r0
mov r5,#9 ;開始的迴圈數目是10次,所以應該從9開始
mov r6,r5
compare
sub r6,r6,#1 ;迴圈1次減1
ldr r2,[r1] ;將放在暫存器中的資料取出進行大小比較
ldr r3,[r0]
cmp r3,r2
movcc r7,r2 ;如果後面的位址的數值比前乙個小則交換他們的資料
movcc r2,r3
movcc r3,r7
str r2,[r1] ;將資料儲存到相應的記憶體單元中
str r3,[r0]
cmp r6,#0 ;看每次的迴圈是否結束
bne compare
add r1,r1,#4 ;每次迴圈結束以後將初始的指向的記憶體位址後移乙個單元
mov r0,r1 ;重新初始化上個迴圈中的暫存器中儲存的位址
sub r5,r5,#1 ;每次迴圈以後上面在以後的迴圈中的次數都會減1
mov r6,r5
cmp r5,#0 ;判斷所有的迴圈是否結束
bne compare
data
dcd 9,4,6,7,8,1,3,2,0,5
stop
b stop
ARM匯程式設計序學習
part1 匯程式設計序框架 一 完整框架 section.data 初始化的資料 section.bss 未初始化的資料 section.text global start start 入口 彙編 二 簡化框架 text global start start 彙編 注 以上簡化版為常用框架 par...
匯程式設計序 實現1 100偶數求和
我們在開始寫彙編 的時候,一般是先寫出c語言的實現,然後再翻譯成彙編的實現。在這個過程中,我們還可以利用ide的反彙編功能檢視編譯器是如何幫我們生成彙編 的,以及思考編譯器為什麼這樣做,搞懂了這些,不論是對我們的c語言還是組合語言都有很大的提公升。include int main printf th...
ARM學習之ARM匯程式設計序
在arm thumb 組合語言程式中以程式段為單位組織 段可以分為 段 code section 和資料段 data section 乙個匯程式設計序至少應該有乙個 段,當程式較長時,可以分割為多個 段和資料段,多個段在程式編譯鏈結時最終形成乙個可執行的映像檔案。可執行映像檔案的構成 鏈結器根據系統...