博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1.汇编指令介绍(arm)
阅读量:5221 次
发布时间:2019-06-14

本文共 1412 字,大约阅读时间需要 4 分钟。

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

一、汇编语言

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

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

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

  

二、汇编语言 指令集和不同处理器架构的关系
   指令集(不同处理器平台可以识别的一套汇编指令)架构决定了处理器如何识别汇编语言,以及如何同上层进行通信。
   
   处理器架构的异同在识别了汇编语言之后,例如在一个处理器中设计三个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://www.cnblogs.com/nyqm/p/7954734.html

你可能感兴趣的文章
二组讨论结果
查看>>
JUC-Callable
查看>>
Codeforces Round #424 (Div. 2, rated, based on VK Cup Finals)A,B,C
查看>>
hdu 4897 Little Devil I (树链剖分+线段树)
查看>>
charles解决相应乱码问题
查看>>
Unity中Button按钮的触发监听事件
查看>>
【Spark】SparkStreaming-流处理-规则动态更新-解决方案
查看>>
java报表工具FineReport常用函数的用法总结(文本和日期函数)
查看>>
python3下scrapy爬虫(第十四卷:scrapy+scrapy_redis+scrapyd打造分布式爬虫之执行)
查看>>
React Native知识11-Props(属性)与State(状态)
查看>>
thinkphp5.0 ajax分页
查看>>
python中的argsort函数
查看>>
ng-model的用法
查看>>
python 列表排序方法sort、sorted技巧篇
查看>>
关于unity3D的小操作
查看>>
java_IO_File_综合运用:建立一个指定扩展名的文件的列表
查看>>
归并排序(C#实现)
查看>>
无需编译、快速生成 Vue 风格的文档网站
查看>>
css grid栅格布局
查看>>
springboot集成mybatisplus
查看>>