一。從一數到十
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 這條指令與上一條指令的不同之處在...