ARM汇编

学习ARM的目的

学习arm汇编的主要目的是为了编写arm启动代码,启动代码启动以后,引导程序到c语言环境下运行。换句话说启动代码的目的是为了在处理器复位以后搭建c语言最基本的需求。因此启动代码的主要任务有:

  1. 初始化异常向量表;
  2. 初始化各工作模式的栈指针寄存器;
  3. 开启arm内核中断允许;
  4. 将工作模式设置为user模式;
  5. 完成上述工作后,引导程序进入c语言主函数执行;

主要指令

mov指令:加载12位立即数到寄存器或转移一个寄存器的值到另外一个寄存器

mov r0, #2 ;加载立即数2到寄存器r0,MOV{S}<c> <Rd>, #<const>

mov r1, r0 ;将r0寄存器的值加载到r1,MOV{S}<c> <Rd>, <Rm>

      大多数指令的格式为opcode rd, rn ,rm,其中,rd是目标寄存器,rn是第一操作数寄存器。

add指令常用的两种方式

ADD{S}<c> <Rd>, <Rn>, #<const>

ADDS}<c> <Rd>, <Rn>, <Rm>{, <shift>}

sub指令

SUB{S}<c> <Rd>, <Rn>, #<const>

SUB{S}<c> <Rd>, <Rn>, <Rm>{, <shift>}

        12位立即数的条件

  1. 如果某个数的数值范围是0~0xFF之间,那么这个数一定是立即数;
  2. 把某个数展开成2进制,这个数的最高位1至最低位1之间的二进制数序列的位数不能超过8位;
  3. 这个数的二进制序列凑够8位之后的的右边必须为偶数个连续的 0

LDR寄存器加载指令

bic指令位清零指令 

 指令后可增加的条件 
跳转指令b 栈的实现类型

入栈保护指令 

 出栈恢复指令

在汇编中调用C函数编写的函数 

 向C函数传参

 切换ARM内核的工作模式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值