• 汇编语言


    1.相对跳转指令 b,bl

    不同之处在于,bl指令除了跳转之外,还将返回地址(bl的下一条指令的地址)保存在lr寄存器。

    范例:  b fun1

    fun1:

        b1 fun2

    fun2:

    注意:跳转范围是当前指令的前后32MB。

    2.数据传送指令mov,地址读取伪指令ldr

    mov可以把寄存器的值赋给另一个寄存器,或者把常数赋给寄存器。

    mov  r1,r2      //r1 = r2

    mov  r1,#4096   //r1 = 4096

    注意:mov指令传送的常数必须是立即数,如果不知道那个数是不是立即数时,最好用ldr来赋值,ldr为伪指令。

    ldr r1, = 4096    //r1 = 4096

    内存访问指令:ldr,str,ldm,stm

    ldr指令从内存中读取数据到寄存器,操作数都是32位。

    ldr r1,[r2,#4]    //将地位为r2+4的内存单元数据读取到r1中。

    ldr r1,[r2],#4    //将地址为r2的内存单元数据读取到r1中,然后r2 = r2 +4

    str指令把寄存器的值存储到内存中

    str r1,[r2,#4]    //将ri的数据保存到地址到r2+4的内存单元中

    str r1,[r2],#4    //将r1的数据保存到地址为r2的内存单元中,r2 = r2 +4

    加减指令add,sub

    add r1,r2,#1      //r1 = r2 + 1

    sbu r1,r2,#1      //r1 = r2 - 1

    程序状态寄存器访问指令:msr,mrs

    ARM处理器有一个程序状态寄存器(cpsr),用于控制处理器的工作模式,设置中断的总开关

    msr cpsr,r0    //复制r0到cpsr

    mrs r0,cpsr    //复制cpsr到r0

    ldm和stm属于批量内存访问指令(后续)。

    3.

  • 相关阅读:
    城域波分组网的若干关键因素考虑
    浅析影响MSTP设备以太网宽带的因素
    通过网络访问adb
    ubuntu和ok6410开发板之间架设nfs
    mysql connector c++与 visual studio 2012 联合使用
    移植mysql到arm平台
    Python Numpy数组保存
    [转] 如何查看mysql的存储引擎类型
    通过session判断判断用户的操作权限
    PHP图形图像的典型应用 简单图像的应用(水印)
  • 原文地址:https://www.cnblogs.com/stm32f4/p/6688633.html
Copyright © 2020-2023  润新知