AREA Example,CODE,READONLY
ENTRY
CODE32

;S 后缀:更新标志位CPSR
;!后缀:基址寄存器中的地址发生变化
;LDR 从存储器中加载数据到寄存器
;STR 从寄存器中加载数据到存储器

;立即寻址
MOV R0 ,#2
SUBS R0,R0,#2

;寄存器寻址
MOV R2,#2
MOV R1,R2

ADDS R0,R1,R2;

;寄存器间接
LDR R3,=0X40000000;LDR伪指令,把地址加载到寄存器里面去
STR R0,[R3];0x40000000代表着一个存储器,把R0寄存器的内容,传送到0X40000000地址的存储器中
;以上步骤其实是设定0x40000000存放4

LDR R4,[R3];寄存器间接其实是这一步 R3--->0x40000000----->4

;基址变址寻址
LDR R4,=0X40000004
STR R0,[R4]
LDR R4,[R3,#0x04];把首地址加上偏移量得到数据的地址再寻址 R3------->0x40000000+4=0x40000004----->4

;堆栈寻址
MOV R1,#1
MOV R2,#2
MOV R3,#3
MOV R4,#4

LDR SP,=0x40000000;堆栈首地址
;要注意0x40000000以上的地址才有效,用满递减的话,0x40000000开头,压进去一个,就变成0x3FFFFFFC了,数据会丢失

;一个个压栈
;满递增 压入一个 sp会加4
STMFA SP!,{R1}
STMFA SP!,{R2}
STMFA SP!,{R3}
STMFA SP!,{R4}
;或者STMFA SP!,{R1-R4}

LDMFA SP!,{R7-R10};出栈,将数据放置到R7-R10中

;多寄存器寻址
LDR R0,=0X40000000
STR R1,[R0]
STR R2,[R0,#4]
STR R3,[R0,#8]
STR R4,[R0,#12]

LDMIA R0,{R5,R6,R11,R12}
;其实跟堆栈差不多
;就是把[R0]---->R1,R0+4]---->R2,[R0+8]---->R3,[R0+12]---->R4
;每隔一个参数就加4,但R0的基地址不变

END

ARM六种寻址方式的汇编实现的更多相关文章

  1. ARM指令集详解--汇编

    1.       汇编 1.1.    通用寄存器 通用寄存器 37个寄存器,31个通用寄存器,6个状态寄存器,R13堆栈指针sp,R14返回指针,R15为PC指针, cpsr_c代表的是这32位中的 ...

  2. Arm寄存器介绍及汇编基础

    一.ARM处理器支持7种工作模式 ① 用户模式(USR): 用于正常执行程序(The normal ARM program execution state) ② 快速中断模式(FIQ): 用于高速数据 ...

  3. ARM中C和汇编混合编程及示例(转)

    在嵌入式系统开发中,目前使用的主要编程语言是C和汇编,C++已经有相应的编译器,但是现在使用还是比较少的.在稍大规模的嵌入式软件中,例如含有OS,大部分的代码都是用C编写的,主要是因为C语言的结构比较 ...

  4. ARM指令集----寻址方式

    ARM指令集可以分为跳转指令,数据处理指令,程序状态寄存器传输指令,LOAD/Store指令,协处理器指令和异常中断产生指令6类 ARM指令集的寻址方式 数据处理指令的操作数的寻址方式 字以及无符号字 ...

  5. ARM GCC 内嵌汇编手册

    转自:http://blogold.chinaunix.net/u2/69404/showart_1922655.html ARM GCC 内嵌(inline)汇编手册 关于这篇文档这篇文章是本人为方 ...

  6. ARM 处理器寻址方式之间接寻址的几种表达

    我们以 LDR 指令为例来分别举例分析. LDR 指令的格式为: LDR{条件} 目的寄存器,<存储器地址> LDR 指令是字加载指令,用于从存储器中将一个 32 位的字数据送到目的寄存器 ...

  7. ARM汇编

    ARM汇编 ISA ISA即指指令集架构(Instruction Set Architecture)是与程序设计有关的计算机架构的一部分,包括本地数据类型.指令.寄存器.地址模式.内存架构.中断和意外 ...

  8. 常用ARM汇编指令

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

  9. ARM汇编指令的一些总结-转

    ARM汇编指令的一些总结ARM汇编指令很多,但是真正常用的不是很多,而且需要认真琢磨的又更少了.比较有用的是MOV B BL LDR STR还是通过具体汇编代码来学习吧.@ disable watch ...

随机推荐

  1. Struts07---访问servlet的API

    01.创建登录界面 <%@ page language="java" import="java.util.*" pageEncoding="UT ...

  2. YYMMDD转YYYY-MM-DD

    date.replace(/(\d{4})(\d{2})(\d{2})/g,'$1-$2-$3');

  3. 对servlet的 再总结 (精品)

    首先 可以通过URL 在浏览器端访问servlet,因为在web.xml中配置了URL与类全名的 映射. 我们初学时,很容易分不清,浏览器端访问的 是jsp页面还是servlet.  其实当我们用浏览 ...

  4. for-in 的坑

    for-in 循环的下标为字符串,不是数字 var ar=[13,2,13,14]; function isSort(ar){ for(var i in ar){ console.log(i+':'+ ...

  5. HihoCoder 1053 : 居民迁移 二分+贪心+双指针(好题)

    居民迁移 时间限制:3000ms 单点时限:1000ms 内存限制:256MB 描述 公元2411年,人类开始在地球以外的行星建立居住点.在第1326号殖民星上,N个居住点分布在一条直线上.为了方便描 ...

  6. 剑指Offer面试题:1.实现单例模式

    一 题目:实现单例模式Singleton 题目:设计一个类,我们只能生产该类的一个实例. 只能生成一个实例的类是实现了Singleton(单例)模式的类型.由于设计模式在面向对象程序设计中起着举足轻重 ...

  7. 《.NET程序员面试秘籍》读书笔记

    1. 简述 private. protected. public. internal 修饰符的访问权限. private :设置类或类的成员为私有,在类的内部才可以访问.有时要访问私有成员时,可通过g ...

  8. Vue.js devtool插件下载安装及后续问题解决

    在中国,你是无法使用谷歌应用商店,所以你下载插件,要使用一些别的手段,一种是下载源码编译,另一种是通过第三方网站.第一种不适合小白,所以现在介绍第二组. 下载插件网站 国外网站:https://www ...

  9. Django工程目录结构优化

    1.我看到这篇文章,写的不错,在此复制了一份,防止以后找不到! 感谢作者的翻译--->原文的链接:http://www.loonapp.com/blog/11/ 如果原文存在,请打开原文件阅读 ...

  10. Oracle 11G RAC:生产环境下架构

    转: it168网站  原创 作者:刘炳林 在真实环境搭建一套Oracle RAC就好比是一堂劳动课,劳动前需要准备好劳动工具,对劳动课内容有充分的认识;按照步骤一步一步进行,需要考虑劳动过程中可能遇 ...