ARM学习day3-->汇编指令

本文详细介绍了ARM处理器中的内存操作指令,包括单个寄存器与内存的访问、连续内存空间的访问和堆栈操作,以及SWI指令。重点讲解了ldr、str及其变种,ldm、stm系列指令的用法,同时阐述了堆栈操作的原理。此外,还提及了SWI软中断指令及其在异常处理中的角色。
摘要由CSDN通过智能技术生成

1.内存的操作指令

 

1.1单个寄存器和内存的访问

ldr:将指定地址的内存空间的内存拷贝到一个寄存器中

str:将一个寄存器中的内容拷贝到指定的内存空间中

a:

    .word 0x00

ldr r0,=a @将a变量的地址赋值给了r0 ldr是伪指令

ldr r1,[r0] @r1 = *r0

str r1,[r2]        @其中r2是b的地址         *r2 = r1
.text    @告诉编译器以下代码放在代码段

if 0
int aa = 0x12345678;
int bb = 0x00;
bb = aa;
.endif

@分别将aa和bb的地址存放在r0和r1中
ldr r0,=aa
ldr r1,=bb


ldr r2,[r0]
ldr r3, [r1]
nop
nop
nop


.data
aa:
    .word 0x12345678

bb:
    .word 0x00

.end



ldr和str------->每次只访问四个字节

ldrb和strb------->每次只访问一个字节

ldrh和strh------->每次只访问两个字节

拷贝字符串:

一次拷贝一个字符

ldr r0,[r1, #4] @r0 = *(r1+4)

ldr r0,[r1],#4 @r0=*r1, r1+=4

1.2 连续内存空间的访问

ldm:将一块连续空间的内容拷贝到一组寄存器中

stm:将一组寄存器中的内容拷贝到一块连续的空间中

i--->increase   地址变化方向从小到大

d---->decrease    地址变化方向从大到小

a--->after        指针指向的空间没有值,需要先操作,后增加

b---->before        指针指向的空间有值,需要先增加后操作

ia:先访问内存,后增加地址        p++

ib&#x

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值