b halt 彙編 arm常用幾個組合語言的程式

2021-10-13 06:52:07 字數 1774 閱讀 9599

一。從一數到十

count

equ 0x30003100

定義變數

count

的基位址

area example1,code,readonl

y;宣告**段

example1

為唯讀entry

標識程式入口

code32宣告位

arm指令

start

ldr r1,=count

將0x30003100

賦給r1

mov r0,#0

執行r0=0

str r0,[r1]

儲存r0

暫存器的資料到

r1指向的儲存單元

loop

ldr r1,=count

將0x30003100

賦給r1

ldr r0,[r1]將r1

中的數值作為位址,取出此位址中的資料儲存到r0中

add r0,r0,#1

執行r0=r0+1

cmp r0,#10將r0

與進行比較

movhs r0,#0若r0

大於等於

,則r0=0

str r0,[r1]

儲存r0

暫存器的資料到

r1指向的位址單元

b loop

跳轉到loop

end彙編檔案結束二,的

次冪xequ初始化x為

nequ

初始化n

為area

example3,code,readonl

y ;生明**段

example3

為唯讀entry

標識程式入口路

code32宣告位

arm指令

start

ldrsp,=0x30003f00

把0x30003f00

賦給sp

r13ldr

r0,=x把賦給

r0ldr

r1,=n把賦給

r1bl

pow跳轉到

powr14

中halt

bhalt

等待跳轉

powstmfd

sp!,

將r1-r12

入棧,滿遞減堆疊

movs

r2,r1將r1

賦給r2

,並影響標誌位

moveq

r0,#1

若z=1,

則r0=1

beqpow_end

若z=1,

跳轉到pow_end

movr1,r0將r0

中值賦給

r1sub

r2,r2,#1

將r2-1

的只賦給

r2pow_l1

bldo_mul

跳轉到do-mul

r14中

subs

r2,r2,#1

將r2-1

的值賦給

r2,並影響標誌位

bnepow_l1

若z=0,

跳轉到pow_l1

pow_end ldmfd

sp!,

資料出棧,存入到

r1-r12,pc

中do_mul

mulr0,r1,r0

把r1*r0

的值賦給

r0mov

pc,lr

;lr中的值賦給

pcend

彙編結束

ARM常用彙編指令

1 gbll 偽指令用於定義乙個全域性的邏輯變數,並初始化為。gbll bootloader bootloader setl 2 get 或 include get 偽指令用於將乙個原始檔包含到當前的原始檔中,並將被包含的原始檔在當前位置進行彙編處理。可以使用 include 代替 get。incl...

基礎常用arm彙編指令

ldr 目的暫存器 儲存器位址 作用 指令從記憶體中讀出資料到暫存器中 比如 ldr r1,r2,4 將位址r2 4的記憶體單元的資料讀取到r1中 ldr r1,r2 將位址r2的記憶體單元的資料讀取到r1中。r1 r2 注意 ldr中的第二個引數為 時,表示偽指令,或者表示記憶體訪問指令 比如 l...

cmp 位元組 彙編 Arm常用彙編指令

1.單暫存器載入指令 ldr ldr r0,r1 r0 載入字指令 ldr r0,r1 將記憶體中的乙個字 4個位元組 載入到暫存器r0中 載入位元組指令 ldrb r0,r1 將記憶體中的乙個位元組載入到暫存器r0中 有符號數載入位元組指令 ldrsb r0,r1 這條指令與上一條指令的不同之處在...