ARM体系结构和汇编指令

作者: 赵敏是程序媛 | 来源:发表于2019-06-22 10:57 被阅读80次

最近工作要用ARM体系结构和汇编指令,在此边学边写。希望对同样有需求的人有所帮助。

先列出我的学习资料路径,供大家一起学习:

《ARM入门》

https://www.bilibili.com/video/av22389159/?p=2 系列课程,共37讲

《ARM体系结构和汇编》

https://www.bilibili.com/video/av28646164/?spm_id_from=333.788.videocard.5

说明,这个系列的视频在汇编方面讲的很详细,推荐学习

https://www.bilibili.com/video/av53306639?from=search&seid=15588178575541602823

说明,上面这是视频是个老外讲的,纯视频,无字幕,看着累。自己选择是否学习吧。

下面我们来一一学习ARM体系的汇编指令吧。

假设R0-R7寄存器初始值都是0。

MOV,比如MOV R0,#0X1    ;即把#0X1的值赋值给R0寄存器。其中分号是汇编语言的注释。此时R0寄存器的值就是0X00000001。

ADD,比如ADD R2,R0,R1  ;R0+R1=>R2,即1+0=1。此时R2寄存器的值就是1。

ADDS、ADC,这两个也代表加法,与ADD的不同是,这两个符号代表带进位的加法。即带CPRS进位的。

SUB,比如SUB R3,R2,R1 ;R2-R1=>R3,即1-0=1。此时R3寄存器的值就是1。

SUBS,这各也代表减法,与SUB不同的是,这代表带进位的减法。

MVN,比如MVN R0,#0X0 ;把值1取反,即0XFFFFFFFF。此时R0计算器的值就是0XFFFFFFFF。

B,代表打断点,比如B .  ;代表在当前位置打断点,用于逐步调试。

AND,比如AND R3,R2,R1  ;R1与R2=>R3,即R1寄存器的值与R2寄存器的值做位与运算后,把值赋给R3寄存器。

ORR,比如R6,R1,R2 ;R1或R2=>R6,即R1寄存器的值与R2寄存器的值做位或运算后,把值赋给R6寄存器。

CMP,比如CMP R3,R1  ;比较R3和R1寄存器(实际执行R3-R1)的值,并把值赋给CPRS标志位。

BIC,比如BIC R0,R0,#0X1 ;把R0寄存器的最低位置位0,并把结果保存在R0寄存器。比如R0寄存器中原来保存的数值为3,即0011,则把低位置位0,即0010,把0010保存到R0,即2。

STR,比如

MVN R5,#0X0  ;此时R5寄存器的值是0XFFFFFFFF

MOV R6,#0X9000 

STR R5,[R6] ;STR是用来把寄存器的值写入内存地址(寄存器-->内存)。比如这里的,R6寄存器存储的是地址0X9000,比如此时内存地址0X9000的地址的值是00 00 00 00,那执行这句汇编指令后,会把R5寄存器的值0XFFFFFFFF存入内存地址0X9000地址当中,即内存地址0X9000这个位置存入FF FF FF FF。

LDR R7, [R6] ;LDR是用来把内存地址内的值调入寄存器(内存-->寄存器)。比如这里的,把内存地址0X9000的值FF FF FF FF写入寄存器R7,执行这条指令之后,寄存器R7的值就由0X00000000变为了0XFFFFFFFF。

最后贴上ARM架构下CPU内部结构图,希望更清晰的理解。

ARM体系结构和汇编指令

最后推荐一款好用的ARM开发工具,ads1.2,这是一个32位的工具,安装的时候请注意不要安装在默认的(X64目录)。

祝你学习顺利。


程序员是一种时时刻刻需要学习的职业,不学习何以自称“程序媛”呢。

哈哈,边学边写,写出来证明自己学懂了,不然我很喜欢自欺欺人。

我在007不出局践行写作,写7年。你敢来吗?

ARM体系结构和汇编指令

相关文章

  • ARM体系结构和汇编指令

    最近工作要用ARM体系结构和汇编指令,在此边学边写。希望对同样有需求的人有所帮助。 先列出我的学习资料路径,供大家...

  • ARM寄存器

    汇编: 分析和修改汇编指令: 用户模式(usr): ARM处理器:

  • ARM 64 常见汇编指令

    ARM64常用的汇编指令 运算指令 程序跳转指令

  • ARM体系结构与汇编指令

    ARM体系结构 ARMnTDMI ARM处理器状态 ARM状态:32位,处理器执行字方式的ARM指令,处理器在系统...

  • ARM 汇编指令学习:[2]ARM指令集

    ARM 汇编指令学习:[2]ARM指令集 一、跳转指令 1、 B(跳转指令)及BL(带返回跳转指令) 其中: L决...

  • 2018-07-13

    Androguard 安装 使用 ARM汇编 汇编指令 伪指令 伪操作 .arch 框架.fpu 协处理器类型 $...

  • 关于Java的跨平台性,字节码和汇编码

    我们知道,C和C++是将源代码编译成平台相关的汇编指令(比如x86架构汇编指令,arm架构汇编指令),这就导致了已...

  • IOS arm64常用的汇编

    导论 生成汇编文件 寄存器 arm64 汇编条件域 arm64 汇编指令 总结 1. 生成汇编文件 2. 寄存器 ...

  • ARM汇编指令

    关于arm64汇编指令,如下图 汇编指令可以汇总如下:(后续会更新) 关于内存读写指令 注意:读/写 数据是都是往...

  • arm 汇编指令

    https://8biiit.github.io/2019/09/04/Arm%E6%8C%87%E4%BB%A4...

网友评论

    本文标题:ARM体系结构和汇编指令

    本文链接:https://www.haomeiwen.com/subject/gtymqctx.html