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

}

相关推荐
一品人家3 天前
win32汇编环境,得到当前日期时间的例子
汇编
试试看1684 天前
自制操作系统第三天
汇编·系统架构
0xCC说逆向6 天前
Windows逆向工程入门之汇编位运算
c语言·汇编·windows·安全·逆向
矮油0_o6 天前
30天开发操作系统 第 20 天 -- API
c语言·汇编·操作系统
charlie1145141917 天前
从0开始的操作系统手搓教程 4:做好准备,跳到加载器(Loader)
汇编·学习·操作系统·调试·mbr·手搓教程·bochs
官子无敌刘小路9 天前
汇编简介&常用语法
汇编
二进制怪兽13 天前
[笔记] 汇编杂记(持续更新)
汇编
bae-唯一14 天前
关于32位和64位程序的传参方法及虚拟机调试工具总结
汇编·学习
E_han15 天前
7.list
开发语言·汇编·数据结构·c++·算法·list
二进制怪兽15 天前
[笔记] x86汇编语言:从实模式到保护模式之第一章 十六进制计数法
汇编