ARM汇编指令1

· (汇编)指令是CPU机器指令的助记符,进过编译后会得到一串10组成的机器码,可以由CPU读取执行

·(汇编)伪指令本质不是指令(只是和指令一起写在代码中),它是编译器环境提供的,目的是用来指导编译过程,经过编译后伪指令最终不会生成机器码。

·ARM官方的ARM汇编风格:指令一般大写,Windows中IDE开发环境(ADS,MDK)例如:LDR R0,[R1]

·GNU风格的ARM汇编风格:指令一般小写,linux中常用,如:ldr r0,[r1] (两种风格的伪指令差别最大)


·ARM采用RISC架构,CPU本身不能直接读取内存,而要先将内存读取到通用寄存器才能被CPU处理。

·ldr(load register)指令将内存内容读取到通用寄存器。

·str(store register)指令将寄存器内容写入到存入内存空间中。

·ldr/str组合来实现ARM CPU和内存数据交换


·ARM汇编特点:8种寻址方式

    -寄存器寻址                                 mov r1,r2                             r2的值赋值给r1

    -立即数寻址                                 mov r0,#0xFF00                  #后面的数值直接赋值给r0

    -寄存器移位寻址                          mov r0,r1,lsl #3                     r1中的数值左移三位,然后赋值给r0(就是乘于8)

    -寄存器间接寻址                          ldr r1,[r2]                            类似于指针,r2中存操作数的地址,[]类似于解引用

    -基址变址寻址                             ldr r1,[r2,#4]                     r2为基址,r2里面的地址加4,这个地址存的值读到寄存器中

    -多寄存器寻址                             ldmia r1!,{r2-r7,r12}      r1中的8个地址读到r2-r7和r12中(类似于数值中的8个元素)

    -堆栈寻址                                    stmia sp!,{r2-r7,lr}            (没弄明白)

    -相对寻址                                    beq flag

                                                 flag:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值