Arm指令集寻址方式

发布者:知识的海洋最新更新时间:2016-08-04 来源: eefocus关键字:Arm  指令集  寻址方式 手机看文章 扫描二维码
随时随地手机看文章
       我这里讲的快速是指能够快速的上手工作,但任何一门学问都包含着比较具体的知识在里面,这些知识是需要长年累月的积累才可以逐渐从未知到已知,从笨拙到熟练.快速只是一种学知识的步骤,能够在短的时间里把那些不常用的知识排到后面来学习.

        一些书中介绍,不需要了解汇编语言就可以进行Arm的编程,我想对于一般的开发者来讲C语言大概是够用了,但不了解汇编,很多原理性和底层的工作就会做起来困难了.即要快速,又要保证一定的汇编知识,那么学的时候可以走马观花的看一下,至少有个印象,再以后如果碰到的时候,逐渐学习和加深就可以了.

        记忆是比较苦涩的事情,我觉得使用例子最好的方法,例子再加查找,以后用起来比较方便.前面讲过,Arm中有两种指令集,一种叫Arm指令集,一种叫Thumb指令集.资料中使用了一大堆理由说Thumb的16位指令集比Arm 32位指令集要性能好,这是因为它不完全等同于PC的32 80386指令集与8086/8088的16位指令集的区别,再具体的原因对于初学者可以不去理会.

我们讲一下Arm 32位指令集的寻址方式:

    1. 寄存器寻址:

    MOV R1,R2        ;读取R2的值到R1中

    SUB R0,R1,R2   ;将R1的值减去R2的值,结果保存到R0中

 

    2.立即寻址:

    SUBS R0,R0,#1           ;R0减1,结果保存到R0中,并影响标志位

    MOV R0,#0xFF000         ;将0xFF000存储到R0中

 

    3. 寄存器移位寻址:

    MOV R0,R2,LSL #3                ;R2的值左移3位,结果存入R0

    ANDS R1,R1,R2,LSL R3     ;R2的值左移R3位,然后与R1相与,结果存入R1.

    移位操作有这样几种: LSL,LSR,ASR,ROR,RRX,具体含义可以查相关手册

 

    4.寄存器间接寻址:

    LDR  R1,[R2]    ;将R2指向的存储单元的数据读出,保存到R1中

    SWP  R1,R1,R[2] ;将R1的值与R2指定的存储单元的值进行交换.

 

    5.基址寻址:

    LDR  R2,[R3,,0x0C]        ;读取R3+0x0C地址上的存储单元的内容,存入R2中

    STR  R1,[R0,#-4]!         ;先R0=R0-4,然后把R1的值保存到R0指定的存储单元

    LDR  R1,[R0,R3,LSL #1]   ;将R0+R3*2地址上的存储单元中的内容读出,保存到R1中.

 

    6.多寄存器寻址:

    LDMA  R1! {R1-R7,R12}       ;将R1指向单元的数据读出,放到R1~R7,R12中,R1自动加1

    STMIA R0!,{R2-R7,R12}       ;与上面方向相反,R0自动加1

    我总感觉书中写的方向不对

 

    7.堆栈寻址:

    STMFD SP!,{R1-R7,LR}      

    LDMFD SP!,{R1-R7,LR}

    可以参考前面的例子,只不过是堆栈SP寄存器而已

 

    8.块拷贝寻址:

    STMIA R0,{R1-R7}

    STMIB R0,{R1-R7}

    STMDA R0! {R1-R7}

    STMDB R0! {R1-R7}

 

    9.相对寻址:

    BL  SUBR1    ;调用到SUBR1子程序

    BEQ LOOP     ;条件跳转到LOOP标号处

 

      所谓寻址方式,就是指令的表达方式,这种表达方式大概明白了,也就比较容易理解各种指令的含义了.汇编是种学起来比较讨厌的东西,不同CPU系列的计算机汇编语言都不统一,不像高级语言那样,语法比较一致,而且指令会很多,寻址方式也不同,对于常时间只是有同一种CPU的汇编编程的人来讲,汇编也不是什么难事,但对于工作范围比较广的开发者来讲,记忆指令的确是个麻烦的事情.幸好现在大多单片机都可以使用C语言来编程,但对汇编的了解还是有好处的,它能够帮助你理解更底层的问题.

关键字:Arm  指令集  寻址方式 引用地址:Arm指令集寻址方式

上一篇:ARM之---在C语言中内嵌汇编语言
下一篇:ARM串口设置参数解释

推荐阅读最新更新时间:2024-03-16 15:03

ARM 汇编 LDR STR MOV
ARM是RISC结构,数据从内存到CPU之间的移动只能通过L/S指令来完成,也就是ldr/str指令。比如想把数据从内存中某处读取到寄存器中,只能使用ldr比如:ldr r0, 0x12345678就是把0x12345678这个地址中的值存放到r0中。而mov不能干这个活,mov只能在寄存器之间移动数据,或者把立即数移动到寄存器中,这个和x86这种CISC架构的芯片区别最大的地方。x86中没有ldr这种指令,因为x86的mov指令可以将数据从内存中移动到寄存器中。另外还有一个就是ldr伪指令,虽然ldr伪指令和ARM的ldr指令很像,但是作用不太一样。ldr伪指令可以在立即数前加上=,以表示把一个地址写到某寄存器中,比如:ldr
[单片机]
关于初学者该选择学习ARM7还是ARM9的一点建议
一. 谈谈ARM7与ARM9的区别: 本文是写给准备学习ARM技术,而又没想好要学ARM7还是ARM9, 或者对ARM7与ARM9的区别不是很了解的初学者。 ARM7和ARM9的区别: 1. 时钟频率的提高 虽然ARM7和ARM9内核架构相同,但ARM7处理器采用3级流水线的冯 诺伊曼结构;,而ARM9采用5级流水线的哈佛结构。增加的流水线设计提高了时钟频率和并行处理能力。5级流水线能够将每一个指令处理分配到5个时钟周期内,在每一个时钟周期内同时有5个指令在执行。在常用的芯片生产工艺下,ARM7一般运行在100MHz左右,而ARM9则至少在200MHz以上。 2 指令周期的改进 指令周期的改进对于处理器性能的提高有很大的帮
[单片机]
基于ARM的嵌入式的USB接口设计
随着嵌入式系统的广泛应用,各种小型终端需要开发出与外界联系的USB接口。目前,常用的技术有两种。基于单片机的USB接口,特点是需要外置芯片,电路复杂,留下的CPU资源不多;基于ARM的USB接口,特点是资源丰富,但ARM系列产品较多,如果选型不当,还需要搭接较多的外围电路,且不能很好地发挥CPU性能。 USB(Universal Serial Bus)是通用串行总线的缩写,因其具有方便易用,动态分配带宽,容错性优越和高性价比等特点,现已成为计算机的主流接口。 该设计采用三星公司ARM9核的S3C2440A芯片作为CPU,因为该芯片内部集成了控制USB的所有部件,外围电路简单,易于实现。 1 S3C2440A特点 S3C244
[单片机]
基于<font color='red'>ARM</font>的嵌入式的USB接口设计
Energy Micro被ARM公司选为其 ARM Cortex M系列处理器MCU 大学计划的合作伙伴
挪威,奥斯陆,02/05/2013- 节能微控器和无线射频供应商 Energy Micro被ARM公司选为其专注于ARM Cortex®-M系列处理器的大学计划的合作伙伴,这也使得有着较长历史的ARM大学计划进一步扩展。Energy Micro之所以是被ARM 选中,成为其大学计划的新举措的首批合作伙伴之一,是因为其对ARM Cortex架构的坚定的拥护,以及它为客户提供的培训、工具及支持。 ARM的大学计划旨在鼓励电子工程及其他相关大学课程使用ARM处理器,从而使学生可以受益于ARM 的IP 及开发系统。ARM公司的全球大学计划总经理Khaled Benkrid说:“ARM 大学计划项目部很高兴能与Energy Micro合作帮
[单片机]
Atmel推出基于ARM Cortex-M0+的汽车级MCU
最新的Atmel | SMART SAM DA1系列MCU搭载外设触摸控制器,提供更为智能的外设; 支持、更高的性能以及更大的存储空间。 中国北京,2015年3月6日 全球微控制器(MCU)及触控解决方案领域的领导者Atmel 公司 (NASDAQ:ATML)近日宣布推出符合汽车级要求的下一代基于ARM Cortex -M0+的MCU系列,内嵌集成外设触摸控制器(PTC),为电容触控应用提供强劲支持。SAM DA1也是符合汽车要求的Atmel |SMART MCU产品组合的首个系列,最大工作频率为48MHz,CoreMark/MHz分数达到2.14。 Atmel最新的SAM DA1系列是电容触控按键、
[汽车电子]
Atmel推出基于<font color='red'>ARM</font> Cortex-M0+的汽车级MCU
USB海量存储类设备功能在ARM系统中的应用
技术发展到今天的信息时代,数据的存储和传输在嵌入式系统有了越来越重要的地位。而USB是目前设计成熟、应用广泛且使用极为简捷的技术,USB传输是一种高效方便的数据传输方式。基于上述原因,本文重点论述基于USB的海量存储(USB Mass Storage)设备功能在ARM嵌入式系统中设计和应用。使用该设备功能,上位机可以像读写普通U盘一样对于系统采集并存储在FLASH中的数据进行读写。 1 硬件方案 l.1 器件简介 S3C44B0X 是SAMSUNG公司出品的基于ARM7TDMI内核的RISC型微处理器,8 kB指令和数据共享的缓存,主频可达66 MHz,可以运行16位的Thumb指令和32位的ARM指令,且接口丰富,具有通用
[缓冲存储]
MPEG-2传输流解复用在内嵌ARM核的FPGA上的实现
    随着芯片技术的发展,FPGA的容量已经达到上百万门级,从而使FPGA成为设计的选择之一。Altera公司的FPGA芯片EPXA10应用SOPC技术,集高密度逻辑(FPGA)、存储器(SRAM)及嵌入式处理器(ARM)于单片可编程逻辑器件上,实现了RISC和FPGA的完美结合。本文使用EPXA10芯片,利用片上的ARM微处理器对MPEG-2传输流进行解码,得到必要的解码参数,实现了将传输流分成视频流和音频流的解复用。 EPAX10器件 简要介绍 ALTERA公司的EPXA10器件单片集成了ARM硬核,百万门级的FPGA,以及SDRAM存储器的接口。它将FPGA和ARM处理器完美结合在一起,是一个典型的SOPC结构
[嵌入式]
ARM 05年业务高速成长,处理器授权发展势头强劲
英国ARM公司日前发布了其截止至2005年12月31日的2005年第四季度及2005年全年未审计财务报告。报告显示ARM公司2005年第四季度及全年以美元结算总营业收入分别达到1.09亿美元和4.187亿美元,分别增长了8%和14%。第四季度及全年平均运营利润率分别达到35%和32.7%,公司业务继续保持增长和盈利。 2005年第四季度ARM公司以美元结算总营业收入为1.09亿美元,其中包括处理器部门的授权收入3030万美元,处理器部门的版税收入3620万美元,开发系统收入1350万美元,服务收入720万美元,物理IP部门收入2180万美元,其中物理IP授权收入1380万美元,物理IP版税收入800万美元。公司整体订单量在第四季
[焦点新闻]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved