南有乔木z

随心所欲,想写啥就写啥。

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

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

一、汇编语言

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

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

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

  

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

   指令集(不同处理器平台可以识别的一套汇编指令)架构决定了处理器如何识别汇编语言,以及如何同上层进行通信。
   
   处理器架构的异同在识别了汇编语言之后,例如在一个处理器中设计三个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 )

posted on 2017-12-02 16:50  南有乔木z  阅读(1205)  评论(0编辑  收藏  举报