嵌入式学习笔记-汇编基础02

本文详细介绍了ARM指令集中数据处理指令,包括数据传输、算术、逻辑、比较和乘法指令,以及控制流程指令如分支跳转和访存操作。还提到了与程序状态寄存器(cpsr)交互的方法,并涵盖了软中断指令和立即数的使用规则。
摘要由CSDN通过智能技术生成
  1. 数据处理指令

    1. 数据传输指令mov/mvn
      mov数据传递指令 mov既可寄存器与寄存器之间进行数据传递,也可将立即数赋值给寄存器
      mvn数据按位取反后传递
    2. 算数指令 add sub rsb adc rsc
      (反向带进位减法)
      关键单词 carry 进位 subtraction add
      sub r2 r0 r1 r0-r1的值赋给r2
    3. 逻辑指令 and/orr/eor/bic
      与/或/非/位清除
    4. 比较指令 cmp/cmn/tst/teq
      比较指令不需要加后缀S就能影响cpsr寄存器
      cmp r0 r1 等价于判断两者相减是否为0,结果由cpsr寄存器的z位提供
      cmn 取反比较
      tst 测试井号后数字指的位数是否全为0,对两个数进行位与
      teq 对两个数进行异或
    5. 乘法指令 mvl/mla/umull/umlal/smull/smlal
    6. 前导零指令 clz
  2. cpsr指令
    除比较指令外,其他指令访问cpsr程序状态寄存器必须使用下面的指令
    msr 写psr (cpsr/spsr) mrs读psr

mrs		r0,cpsr
bic		r0,r0,#0x1f
orr		r0,r0,#0xd3
msr		cpsr,r0
//或者可以用下面一句替代上面四句
msr cpsr_c,#0xd3
  1. 分支跳转指令
    b 跳转后不返回
    bl (branch and link)跳转后返回 lr
    bx 跳转同时切换到arm模式

  2. 访存指令
    ldr/str 单字节访存指令
    ldm/stm 多字节访存指令
    swp 交换指令,直接将寄存器的数据与内存中的数据交换 swp r0 ,r1 ,[r3]

  3. 软中断指令
    swi(software interrupt)软件中断

  4. 合法立即数与非法立即数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值