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

一、汇编语言

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

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

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

  

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

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

1.汇编指令介绍(arm)的更多相关文章

  1. 浅析VS2010反汇编 VS 反汇编方法及常用汇编指令介绍 VS2015使用技巧 调试-反汇编 查看C语言代码对应的汇编代码

    浅析VS2010反汇编 2015年07月25日 21:53:11 阅读数:4374 第一篇 1. 如何进行反汇编 在调试的环境下,我们可以很方便地通过反汇编窗口查看程序生成的反汇编信息.如下图所示. ...

  2. ARM常用汇编指令介绍

    b     跳转指令(跳转范围为32Mb) bl    带返回地址的跳转,指令自动将下一条指令的地址复制到R14寄存器,然后跳转到指定地址去执行,执行完后返回到下一条指令处执行 pc    寄存器R1 ...

  3. 常用ARM汇编指令

    常用ARM汇编指令 [日期:2012-07-14] 来源:Linux社区  作者:xuyuanfan77 [字体:大 中 小]     在嵌入式开发中,汇编程序常常用于非常关键的地方,比如系统启动时初 ...

  4. 【嵌入式开发】 ARM 汇编 (指令分类 | 伪指令 | 协处理器访问指令)

    作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42408137 转载请著名出处 本博客相关文档下载 :  -- AR ...

  5. ARM体系结构和汇编指令

    第一节 可编程器件的编程原理 1. 可编程器件的特点 1 . CPU在固定频率的时钟控制下节奏运行 2 . CPU可以通过总线读取外部存储设备中的二进制指令集,然后解码执行 3 . 这些可以被CPU解 ...

  6. ARM汇编指令调试方法

    学习ARM汇编时,少不了对ARM汇编指令的调试.作为支持多语言的调试器,gdb自然是较好的选择.调试器工作时,一般通过修改代码段的内容构造trap软中断指令,实现程序的暂停和程序执行状态的监控.为了在 ...

  7. ARM 汇编指令

    ARM汇编程序特点: l         所有运算处理都是发生通用寄存器(一般是R0~R14)的之中.所有存储器空间(如C语言变量的本质就是一个存储器空间上的几个BYTE).的值的处理,都是要传送到通 ...

  8. ARM汇编指令(未完待续)

    ARM指令自己在看的时候,看完之后就忘了,根本记不住,而且有些ARM汇编指令在平常的时候可能根本就用不到,所以也没必要把所有的ARM指令都去记忆,所以自己就想着不去一遍一遍的复习ARM指令,而是在平常 ...

  9. 经常使用ARM汇编指令

    一面学习,一面总结,一面记录. 以下是整理在网上找到的一些资料,简单整理记录一下,方便以后查阅. ARM处理器的指令集能够分为跳转指令.数据处理指令.程序状态寄存器(PSR)处理指令.载入/存储指令. ...

随机推荐

  1. jqGrid 加载完jqGrid之后可以执行函数的方法

    , gridComplete: function() { jQuery('#first_gridpager').html("首页 "); jQuery('#prev_gridpag ...

  2. es6 set&sort

    es6提供了新的数据结构Set. 它类似于数组,但是成员的值都是唯一的,没有重复的值. Set函数可以接受一个数组(或类似数组的对象)作为参数,用来初始化. 1.set去重 首先我们 let 一个数组 ...

  3. vue 移动端的一些ui

    https://www.jianshu.com/p/b79b3b721cd5 Vant. YDUI. Vonic. buefy (bluma的ui) Vux

  4. [Codeforces Round #492 (Div. 1) ][B. Suit and Tie]

    http://codeforces.com/problemset/problem/995/B 题目大意:给一个长度为2*n的序列,分别有2个1,2,3,...n,相邻的位置可以进行交换,求使所有相同的 ...

  5. 如何将centos7作为DNS服务器

    简单来说,dns服务器是起到缓存的作用.比如说我们第一次dig www.baidu.com的时候,dns服务器因为没有解析过百度地址,所以它需要向上一级dns服务器进行查询,然后查询结果会缓存在这台d ...

  6. Android 工具视频学习笔记_WDS

    1. 由于Android源码过于庞大,SourceInsight会经常卡死,不适合了.适合的是Android Studio, 非常好用.使用手册上有介绍如何安装. 编译安卓的过程说明手册中也有. 3. ...

  7. ipfs cluster 模式部署使用(docker-compose 环境运行)

    ipfs 点对点的分布式文件系统,官方提供了集群模式运行的docker 镜像,以及docker-compose 文件 所以测试下 环境准备 docker-compose   version: '3.4 ...

  8. 使用 loki grafana 分析nginx 请求日志

    loki 是类似prometheus 的log 可视化展示.收集系统,已经集成在grafana 6.0 版本中了 说明: 测试环境使用了docker-compose 运行 环境准备 docker-co ...

  9. 利用 groupby apply list 分组合并字符

    利用 groupby apply list 分组合并字符 因为需要对数据进行分组和合并字符,找到了以下方法. 有点类似 SQL 的 Group BY. import pandas as pd impo ...

  10. 用C语言解决python多线程中的GIL问题

    在使用python多线程的时候为了解决GIL问题,有些代码得用C语言写,那么就得生成动态链接库. 当创建动态链接库时,独立位置信息(position independent)代码也需要生成.这可以帮助 ...