ARM匯程式設計序 1 100累加和乙個簡單排序

2021-06-10 08:48:30 字數 1367 閱讀 1856

嵌入式初學者,這學期剛開課,學起來感覺很不錯。

第乙個累加和的原始碼:

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 乙個匯程式設計序至少應該有乙個 段,當程式較長時,可以分割為多個 段和資料段,多個段在程式編譯鏈結時最終形成乙個可執行的映像檔案。可執行映像檔案的構成 鏈結器根據系統...