ARM常用汇编指令介绍

b     跳转指令(跳转范围为32Mb)

bl    带返回地址的跳转,指令自动将下一条指令的地址复制到R14寄存器,然后跳转到指定地址去执行,执行完后返回到下一条指令处执行

pc    寄存器R15,程序计数器指向当前执行的程序地址

lr    寄存器R14,链接寄存器保存程序跳转时的返回地址

ldr   从内存中读取数据加载到寄存器中

str   将寄存器中的数据保存到内存

mov   寄存器与寄存器之间的数据传送指令,也可以将立即数传给目标寄存器

add   加法指令

sub   减法指令

bic   位清除指令

orr   逻辑或运算指令

cmp   比较指令

tst   位测试指令

cpsr  程序状态寄存器(切换处理器工作模式,开关中断)
     (该寄存器只能用mrs和msr指令进行读写操作)

spsr  程序状态保存寄存器,保存cpsr的状态,以便异常返回后恢复异常发生时的工作状态
    
(该寄存器只能用mrs和msr指令 进行读写操作)

mrs   读程序状态寄存器指令

msr   写程序状态寄存器指令

协处理器访问指令:

在RAM系统中,协处理器CP15主要用于储存管理,CP15包含16个32位的寄存器,其编号为 C0 到 C15 。

mrc   协处理器到ARM寄存器的数据传送指令
      例:mrc p15,0,r0,c1,c0,0   (将协处理器 c1
中的数据读入到ARM处理器 r0 中)

mcr   ARM寄存器到协处理器寄存器的数据传送指令
      例:mcr p15,0,r0,c1,c0,0    (将ARM处理器 r0
中的数据写入到协处理器 r0 中)

时间: 2024-11-04 20:56:45

ARM常用汇编指令介绍的相关文章

Android 图解逆向工程中ARM常用汇编指令(一)

我们走得太快,灵魂都跟不上了. 微小的幸福就在身边,容易满足就是天堂. 在逆向和爆破中我们经常会在IDA中接触到汇编,一般做安卓的不会太了解VB回编等,不太了解的同学可以先查看上篇文章<Android ARM常用的汇编指令合集> 再来继续我们的学习,我们先来看张图. 这个view里面有 PUSH/LDR/SUB/MOVS/BLX/SUBS/BEQ/CMP ,这些差不多都是常见的,不过也不需要看得懂,理解这个指令即可,接下来我们就来分析下这些指令分别有什么作用吧. 先引入 概念性 东西,免得大家

ARM 常用汇编指令

ARM 汇编程序的框架结构 .section .data <初始化的数据> .section.bss <未初始化的数据> .section .text .global _start _start: <汇编代码> 注意: 一般是将上面结构进行简化 .text .global  _start _start: <汇编代码> 寄存器操作指令: 算术和逻辑指令: MOV :用于将一个寄存器或被移位寄存器或一个立即数移动到目的寄存器 MOV  r1 ,#8 (注意:#+

ARM重要汇编指令记录

IMPORT ,定义表示这是一个外部变量的标号,不是在本程序定义的EXPORT ,表示本程序里面用到的变量提供给其他模块调用的.以上两个在汇编和C语言混合编程的时候用到 ENDP    表示PROC所定义的过程结束. (end procedure)ENDS    表示SEGMENT定义的段结束.   (end segment)END     程序结束. B.BL.BX.BLX 和 BXJ跳转.带链接跳转.跳转并切换指令集.带链接跳转并切换指令集.跳转并转换到 Jazelle 状态. 状态寄存器传

AT&amp;T汇编指令介绍

linux中使用的AT&T格式的汇编指令,所以总结一下一些比较重要的指令. 1.寻址模式 有多种不同的寻址模式,允许不同形式的存储器引用.我们用符号Ea表示任意寄存器,R[Ea]表示它的值.M[addr]表示addr处地址的值. 题目: 答案:0x100,0xAB,0x108,0xFF,0x11,0x12,0xFF,0x11. 2.leal指令 加载有效地址指令其实是movl指令的变形.它的指令式是从存储器读数据到寄存器,但实际上它根本没有引用存储器.它的第一个操作数看上去是一个存储器引用,但该

常用汇编指令集合

Windows内核分析索引目录:https://www.cnblogs.com/onetrainee/p/11675224.html 常用汇编指令集合 1. gdtr 1.gdtr 读取gdt表地址 其需要六个字节,但是前两个字节并没有用处. 汇编代码: CHAR Sgdtr[6] = { NULL };    __asm {        sgdt Sgdtr;    }   查看内存地址:ff 03 00 f0 03 80   后四个字节值为 8003f000,可以用windbg r gdt

AngularJs的常用的指令介绍

Angular Js的常用指令介绍 1.内置指令(前缀为“ng”): a. Ng-app: 标记和指定了AngularJs脚本作用域: b. Ng-model: 设置表单的具体的控件与当前作用域的属性的值的绑定: 如:<input type="text" ng-model="userName" /><br /> <span>Hello {{userName}}!</span> c. Ng-init: 初始化指定内部作用

汇编指令介绍

8086汇编指令主要有以下几种: 1.数据传输指令 2.算术运算指令 3.逻辑运算指令 4.串指令 5.程序转移指令 6.伪指令 ----------------------------------------------------------------------------------------------------------------------- 具体介绍各种指令的含义: 一.数据传输指令:它们在存储器和寄存器.寄存器和输入输出端口之间传送数据 a.通用数据传送指令 MOV 

汇编--常用汇编指令与标志位关系

加法指令 ADD (addition) 指令对标志位的影响: CF=1   最高有效位向高位有进位 CF=0   最高有效位向高位无进位 OF=1   两个同符号数相加(正数+正数 或 负数+负数),结果符号与其相反. OF=0   两个不同符号数相加,或同符号数相加,结果符号与其相同. 带进位加法指令 ADC (add with carry) 指令对标志位的影响: CF=1   最高有效位向高位有进位 CF=0   最低有效位相高位无进位 OF=1   两个同符号数相加,结果符号与其相反, O

汇编笔记二【32位通用寄存器 以及 常用汇编指令】

一.32位通用寄存器(EAX,ECX,EDX,EBP,ESP,EBP,ESI,EDI) 二.十六位通用寄存器(AX,CX,DX,BX,SP,BP,SI,DI) 三.八位通用寄存器(AH,AL,CH,CL,DH,DL,BH,BL) 四.32位,16位,8位寄存器之间的关系 1.寄存器都是高位在前,低位在后. 2.都是包含关系,32位寄存器之中包含了16位寄存器,16位寄存器之中包含了8位寄存器. 关系如下: 五.32位的含义 一位只能放0或1,32位就意味着能放32个0或1. 所以32位最小取值为