zoukankan      html  css  js  c++  java
  • 1.汇编指令介绍(arm)

    本文作为本人学习过程中的记录及时不时的突发奇想偶记。鄙人菜鸟一只,文中如有错误或疏漏,若读者肯不吝赐教,在下感激零涕。文章一直不断更新中

    一、汇编语言

      汇编语言是一种应用计算机、微处理器、微控制器或其它可编程器件的低级语言(符号语言)。在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号带图指令或操作数的地址。特定的汇编语言和特定的机器指令集是一一对应的,不同平台之间不可移植。

      特点:①操作的不是具体的数据而是寄存器或者存储器。所以速度相较于处理数据为主的高级语言要快。

         ②在不同平台、处理器架构间移植性差,程序编写兼顾软硬件,书写复杂。

      

    二、汇编语言 指令集和不同处理器架构的关系

       指令集(不同处理器平台可以识别的一套汇编指令)架构决定了处理器如何识别汇编语言,以及如何同上层进行通信。
       
       处理器架构的异同在识别了汇编语言之后,例如在一个处理器中设计三个ALU,在一个周期里执行三次加法运算

       ARM是RICS结构处理器


    三 X86架构微处理器的寄存器说明
       eax ebx ebp esp..都是x86的通用寄存器的名称。
       EAX:累加器
       EBX:是基地址寄存器。
       ESP:专用做堆栈指针,也称栈顶指针。

    四、常见汇编指令(arm架构)
       (一)、数据的存储、读取指令

        1. LDR   r0,[pc,#520] ;@0x08001070     // ARM指令集- 字数据加载指令:存储器→寄存器,从存储器地址pc+520处读取数据加载到r0寄存器中。
            LDRB 字节数据加载指令 /  LDRH - 半字数据加载指令 

        2. STR  r0,[r1]  ;  //ARM指令集 - 字数据存储指令 : 存储器→寄存器, 将寄存器r0中的数据存放到以r1为地址的存储器中。

       (二)、跳转指令

      在ARM程序中实现程序跳转有两种方式,一种是使用跳转指令 :B / BL / BLX / BX;另一种方式是直接在程序计数器PC指针中直接写入要跳转目的地址的值。

      1.B Label ;    // ARM处理器跳转到给定的地址并执行。

      2.BL Label;  //处理器跳转到给定的地址,并将当前PC的地址保存到R14寄存器中,实现跳转后的程序返回。是实现子程序的一种通常手段。

      3.BLX Label; // 功能同2,且将处理器的工作状态由ARM状态切换到Thumb状态。用于实现主程序和子程序应用不同指令集的状况。

      4.BX Label; //目标既可以是ARM指令,也可以是Thumb指令。

      (三)、特殊功能寄存器的访问     xPSR /PRIMASK / FAULTMASK / BASEPRI / CONTROL

      1.MRS R0 , BASEPRI     ;读取BASEPRI到R0中

      2.MSR PRIMASK,R0   ;写r0总的内容到PRIMASK中

      (四)、

        IMPORT 表示该标号是一个外部变量的标号

        EXPORT 表示标号是在本文件中定义

        EQC  定义一个宏(类似define)
      2.MOV指令
          汇编语言中的传递立即数指令。格式: MOV AX 2000H //将十六位数据2000H放到AX寄存器中
          (更多格式和用法  https://zhidao.baidu.com/question/391946699.html )

  • 相关阅读:
    洛谷P4016 负载平衡问题 费用流
    Reactor Cooling ZOJ
    Acme Corporation UVA
    洛谷P4014 分配问题 费用流
    洛谷P4013 数字梯形问题 费用流
    洛谷P4012 深海机器人问题 费用流
    力扣题目汇总(旋转数字,移除元素,找不同)
    力扣题目汇总(两数之和Ⅱ-输入有序数组,删除排序数组中的重复项,验证回文串)
    逻辑练练手小程序
    爬虫之Scarpy.Request
  • 原文地址:https://www.cnblogs.com/nyqm/p/7954734.html
Copyright © 2011-2022 走看看