ARM汇编程序设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

cmp r0,#5

bcs aaa

add r0,r0,#1

aaa nop

cmp r0,#5

addcc r0,r0,#1

bl指令完成两个功能:将子程序的返回地址保存在LR即R14同时将PC的值改为目标子程序的第一条指令的地址。

Start:

Mov r0,#10

Mov r1,#3

Bl doadd

Mov r1,r1,r0

Doadd

Add r0,r0,r1

Mov pc,lr

.end

用汇编程序实现IF语句的功能:

Mov r0,#15

Mov r1,#12

Cmp r0,r1

Movhi r2,#100

Movls r2,#50

用汇编程序实现FOR循环的功能:Mov r0,#0

Mov r1,#10

Mov r2,#0

L1: cmp r0,r1

Bhs l2

Add r2,r2,#1

Add r0,r0,#1

B l1

L2: .end

用汇编语言实现WHILE循环While(x<=y)

X=x*2;

mov r0,#1

mov r1,#20

b l2

l1: mov r0,r0, lsl #1

l2: cmp r0,r1

bls l1

end

用汇编语言实现计算算术功能:n equ 100

.global _start

-start:

.arm

arm_code:

Ldr sp,=0x40003f00

Adr r0,thumbcode+1

Bx r0

.ltorg

.thumb

Thumb_code:

Ldr r0,=n

Bl sum_n

B thumb_code

Sum_n:

Push {r1-r7,lr}

Movs r2,r0

Beq sum_end

Cmp r2,#1

Beq sum_end

Mov r1,#1

Mov r0,#0

Sum_l1: add r0,r0,r1

Bcs sum_err

Cmp r1,r2

Bhs sum_end

Add r1,r1, #1

B sum_l1

Sum_err: mov r0,#0

Sum_end: pop {r1-r7,pc}

.end

数据块的复制(SRC——DST):.global _start

_start:

Ldr r0,=src

Ldr r1,=dst

Mov r2,#num

Mov sp,#0x400 Blockcopy:

Movs r3,r2, lsr #3

Beq copywords

Stmfd sp!,{r4-r11} Octcopy:

Ldmia r0!,{r4-r11}

Stmia r1!,{r4-r11}

Subs r3,r3,#1

Bne octcopy

Ldmfd sp!,{r4-r11}

Copywords:

Ands r2,r2,#7

Beq stop

Wordcopy:

Ldr r3,[r0],#4

Str r3,[r1],#4

Subs r2,r2,#1

Bne wordcopy

Stop: mov r0,#0x18

Ldr r1,=0x20026

Swi 0x123456

Src dcd 1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8,1,2,3,4 Dst dcd 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 .end

相关文档
最新文档