ARM学习day3-->汇编指令

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++

<

你可能感兴趣的:(arm,学习,嵌入式硬件)