汇编指令总结、练习、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;

}

相关推荐
iCxhust2 天前
8086汇编 word ptr
汇编·单片机·嵌入式硬件·微机原理·8088单板机
大阳1232 天前
ARM.9(RGBLCD,PWM)
c语言·开发语言·汇编·单片机·嵌入式硬件·pwm·rgblcd
2301_789015623 天前
Linux基础开发工具一:软件包管理器、vim编辑器
linux·服务器·c语言·汇编·c++·编辑器·vim
是星辰吖~4 天前
X86反汇编_深度学习_基础二叉树
汇编
iCxhust4 天前
汇编返回指令ret iret retf区别
汇编·微机原理·8088单板机
怣疯knight5 天前
ida里打印python版本
汇编
是星辰吖~5 天前
X86反汇编_深度学习_栈反汇编分析
汇编
是星辰吖~5 天前
X86反汇编_深度学习_队列反汇编分析
汇编
say_fall5 天前
半导体存储器_从分类到Cache完全指南
汇编·微机原理·8086
是星辰吖~6 天前
x86反汇编_深度学习_单链表
汇编