汇编指令总结、练习、C与汇编混合使用

---------------------------------------------------------------------------------------------------------------------------------

这是一些示例代码,可以对照上面的笔记,分析这些代码到底做了什么,将下面这12个练习

.global _start

_start:

@practice1

mov r0,#2

lsl r0,#2

ldr r1,=0x5

sub r0,r0,r1

ldr r1,=0x12345678

add r0,r0,r1

@parctice2

ldr r1,=0x3

ldr r2,=0x5

mul r3,r2,r1

ldr r4,=0x19

sub r0,r4,r3

add r0,#6

@practice3

ldr r2,=0xffff

ldr r3,=0x12345678

and r1,r2,r3

bic r0,r3,r2

lsr r0,#16

add r0,r1

@practice4

ldr r0,=0xabcd

ldr r1,=0x4

bic r0,r0,r1

ldr r1,=0xb

orr r0,r0,r1

ldr r1,=0xf07f

and r0,r0,r1

@parctice5

ldr r0,=0x5 @a

ldr r1,=0x6 @b

ldr r2,=0xa @c

cmp r0,r1

addgt r1,r1,#1

cmp r0,r2

addle r2,r2,#1

@parctice6

start1:

mov r0,#0

mov r1,#1

loop:

add r0,r0,r1

add r1,r1,#1

cmp r1,#100

ble loop

@ bgt stop

@partice7

ldr r0,=0x40000000

ldr r1,=0x12345678

str r1,[r0]

ldr r2,[r0]

@partice8 @0x40000000,0x4000ffff

mov r0,#0x40000000

mov r1,#1

loop1:

str r1,[r0],#4

add r1,r1,#1

cmp r1,#10

ble loop1

ldr r2,=0x40000000

ldr r3,[r2]

ldr r4,=0x40000100

str r3,[r4]

@parctice9

ldr r0,=0x40000000

ldr r1,=0x1234

str r1,[r0],#4

ldr r1,=0xabcd

str r1,[r0]

ldr r2,[r0],#-4

add r3,r3,r2

ldr r2,[r0]

add r3,r3,r2

@parctice10

mov r0,#0x40000000

mov r1,#0x11

mov r2,#0x22

mov r3,#0x33

stmia r0!,{r1-r3}

stmdb r0!,{r4-r6}

@practice11

ldr sp,=0x4000fff0

mov r1,#0x11

mov r2,#0x22

mov r3,#0x33

stmfd sp!,{r1-r3}

mov r1,#0

mov r2,#0

mov r3,#0

ldmfd sp!,{r1-r3}^

@practice12

mrs r0,cpsr

mov r1,#1

bic r0,r0,r1,lsl #7

msr cpsr,r0

mrs r0,cpsr

mov r1,#1

orr r0,r0,r1,lsl #7

msr cpsr,r0

stop:

b stop


汇编和C语言的相互调用

(1)汇编调用 C

mov r0,#2

mov r1,#3

ldr sp,=0x4000fff0

bl add

(2) C 内嵌汇编格式

int add(int a,int b)

{

int c;

/*
asm
(
"add r0,%1,%2\n"
"mov %0,r0\n"
:"=r"(c) //arm ---> C
:"r"(a),"r"(b) // C ---> arm
:"r0" //xiu gai guo de ji cun qi
);
*/

c=a + b;

return c;

}

相关推荐
我在人间贩卖青春5 天前
汇编之伪指令
汇编·伪指令
我在人间贩卖青春5 天前
汇编之伪操作
汇编·伪操作
济6175 天前
FreeRTOS基础--堆栈概念与汇编指令实战解析
汇编·嵌入式·freertos
myloveasuka5 天前
汇编TEST指令
汇编
我在人间贩卖青春5 天前
汇编编程驱动LED
汇编·点亮led
我在人间贩卖青春5 天前
汇编和C编程相互调用
汇编·混合编程
myloveasuka6 天前
寻址方式笔记
汇编·笔记·计算机组成原理
请输入蚊子6 天前
《操作系统真象还原》 第六章 完善内核
linux·汇编·操作系统·bochs·操作系统真像还原
myloveasuka6 天前
指令格式举例
汇编·笔记·计算机组成原理
我在人间贩卖青春7 天前
汇编之分支跳转指令
汇编·arm·分支跳转