嵌入式开发教程之ARM 指令的寻址方式
arm嵌入式技术原理与应用答案

arm嵌入式技术原理与应用答案【篇一:嵌入式系统原理与开发课后答案】章嵌入式系统概述:1、什么是嵌入式系统?是简单列举一些生活中常见的嵌入式系统的实例。
p3嵌入式系统是用于检测、控制、辅助、操作机械设备的装置。
以应用为中心,一计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积和功耗等严格要求的专用计算机系统。
3、是比较嵌入式系统与通用pc的区别。
p3(1)嵌入式系统是专用的计算机系统,而pc是通用的计算机系统。
(2)技术要求不同,通用pc追求高速、海量的数据运算;嵌入式要求对象体系的智能化控制。
(3)发展方向不同,pc追求总线速度的不断提升,存储容量不断扩大;嵌入式追求特定对象系统的智能性,嵌入式,专用性。
4、嵌入式体统有哪些部分组成?简单说明各部分的功能与作用。
p6(1)硬件层是整个核心控制模块(由嵌入式微处理器、存储系统、通信模块、人机接口、其他i/o接口以及电源组成),嵌入式系统的硬件层以嵌入式微处理器为核心,在嵌入式微处理器基础上增加电源电路、时钟电路、和存储器电路(ram和rom等),这就构成了一个嵌入式核心控制模块,操作系统和应用程序都可以固化在rom 中。
(2)中间层把系统软件与底层硬件部分隔离,使得系统的底层设备驱动程序与硬件无关。
一般包括硬件抽象层(hardware abstract layer,hal)和板级支持包(board support package,bsp)。
(3)软件层由实时操作系统(real time operating system,rtos)、文件系统、图形用户接口(graphical user interfaces,gui)、网络组件组成。
(4)功能层是面向被控对象和用户的,当需要用户操作是往往需要提供一个友好的人际界面。
5、嵌入式系统是怎么分类的?p7按照嵌入式微处理器的位数分类(4位、8位、16位、32位、64位);按照是实时性分类(硬实时系统式之系统对响应时间有严格的要求;软实时系统是对响应时间有一定要求);按照嵌入式软件结构分类(循环轮询系统、前后台系统、多任务系统);按照应用领域分类。
ARM汇编语言指令总结

ARM汇编语⾔指令总结ARM处理器有9种寻址⽅式:1、寄存器寻址,2、⽴即寻址,3、寄存器器移位寻址,4、寄存器间接寻址,5、基址寻址,6、多寄存器寻址,7、堆栈寻址,8、块拷贝寻址,9、相对寻址。
ARM指令集:ARM指令基本格式如下:{}{S} ,{,}其中<>的内容是必须的,{}的内容是可选的。
OPCODE指令助记符,COND执⾏条件,S是否影响CPSR中的值,Rd⽬标寄存器,Rn 第⼀个操作数的寄存器,OPERAND2第⼆个操作数。
灵活的使⽤第2个操作数“operand2”能够提⾼代码效率。
它有如下的形式:1)#immed_8r ——常数表达式;2)Rm——寄存器⽅式;3)Rm,shift——寄存器移位⽅式(ASR算术右移,LSL逻辑左移,LSR 逻辑右移,ROR循环右移,RRX带扩展的右移1位)。
COND执⾏条件:下⾯介绍ARM指令:1、存储器访问指令。
存储器访问指令分为单寄存器操作指令和多寄存器操作指令。
单寄存器操作指令LDR/STR指令⽤于对内存变量的访问、内存缓冲区数据的访问、查表、外围部件的控制操作等。
LDR:从内存到寄存器,加载数据。
STR:将寄存器的数据存储到内存。
LDRB操作字节,LDRH操作半字,LDRSH操作有符号半字。
多寄存器操作指令LDM为加载多个寄存器;STM为存储多个寄存器。
允许⼀条指令传送16个寄存器的任何⼦集或所有寄存器。
它们主要⽤于现场保护、数据复制、常数传递等。
进⾏数据复制时,先设置好源数据指针和⽬标指针,然后使⽤块拷贝寻址指令LDMIA/STMIA(传送后地址加4)、LDMIB/STMIB(传送前地址加4)、LDMDA/STMDA(传送后地址减4)、LDMDB/STMDB(传送前地址减4)进⾏读取和存储。
进⾏堆栈操作操作时,要先设置堆栈指针(SP),然后使⽤堆栈寻址指令STMFD/LDMFD(满递减堆栈)、STMED/LDMED(空递减堆栈)、STMFA/LDMFA(满递增堆栈)和STMEA/LDMEA(空递增堆栈)实现堆栈操作。
ARM处理器9种基本寻址方式

寻址方式是根据指令中给出的地址码字段来实现寻找真实操作数地址的方式,ARM处理器有9 种基本寻址方式。
1.寄存器寻址操作数的值在寄存器中,指令中的地址码字段给出的是寄存器编号,寄存器的内容是操作数,指令执行时直接取出寄存器值操作。
例如指令:MOV R1,R2 ;R1←R2SUB R0,R1,R2 ;R0←R1- R22.立即寻址在立即寻址指令中数据就包含在指令当中,立即寻址指令的操作码字段后面的地址码部分就是操作数本身,取出指令也就取出了可以立即使用的操作数(也称为立即数)。
立即数要以“#”为前缀,表示16进制数值时以“0x”表示。
例如指令:ADD R0,R0,#1 ;R0←R0 + 1MOV R0,#0xff00 ;R0←0xff003.寄存器移位寻址寄存器移位寻址是ARM指令集特有的寻址方式。
第2个寄存器操作数在与第1个操作数结合之前,先进行移位操作。
例如指令:MOV R0,R2,LSL #3 ;R2的值左移3位,结果放入R0,即R0=R2 * 8 ANDS R1,R1,R2,LSL R3 ;R2的值左移R3位,然后和R1相与操作,结果放入R1可采用的移位操作如下:LSL:逻辑左移(Logical Shift Left),寄存器中字的低端空出的位补0。
LSR:逻辑右移(Logical Shift Right),寄存器中字的高端空出的位补0。
ASR:算术右移(Arithmetic Shift Right),移位过程中保持符号位不变,即如果源操作数为正数,则字的高端空出的位补0,否则补1ROR:循环右移(Rotate Right),由字的低端移出的位填入字的高端空出的位RRX:带扩展的循环右移(Rotate Right extended by 1 place),操作数右移一位,高端空出的位用原C 标志值填充。
各移位操作过程如图所示。
4.寄存器间接寻址指令中的地址码给出的是一个通用寄存器编号,所需要的操作数保存在寄存器指定地址的存储单元中,即寄存器为操作数的地址指针,操作数存放在存储器中。
嵌入式系统原理第三章习题(1)

第三章第一次作业1. ARM寻址方式有几种?举例说明ARM如何进行不同方式的寻址。
1).寄存器寻址;如MOV R1, R22).立即寻址;如MOV R0, #0xFF003).寄存器移位寻址;如MOV R0, R2, LSL #34).寄存器间接寻址;如LDR R1, [R2]5).基址加偏址寻址;如LDR R2, [R3,#0x0C]6).多寄存器寻址;如LDMIA R1!, {R2-R4,R6}7).堆栈寻址;如STMFD SP!, {R1-R7,LR}8).相对寻址。
如BL SUBR12. 简述ARM指令分类及指令格式形式。
ARM指令集可以分为6大类:数据处理指令、Load/Store指令、跳转指令、程序状态寄存器处理指令、协处理器指令和异常产生指令。
ARM指令的基本格式为:<opcode> {<cond>} {S} <Rd> ,<Rn>{,<operand2>}其中,opcode为操作码;cond为可选的条件码;S为可选后缀;Rd为目标寄存器;Rn为存放第1个操作数的寄存器;operand2为第2个操作数。
3. 假设R0的内容为0x8000,寄存器R1、R2的内容分别为0x01与0x10,存储器中所有存储单元的内容均为0xFF。
连续执行下述两条指令后,存储器及寄存器的内容如何变化?STMIB R0!, {R1, R2}LDMIA R0!, {R1, R2}存储器里内容为:R0→0x80000x80040x8008 →R10x800C →R2R0’→0x80100x8014寄存器里内容为:R0 ←0x8010R1 ←0x10R2 ←0xFF4. ARM处理器如何进入和退出Thumb指令模式?用汇编语言实现ARM状态和Thumb状态互相的切换。
进入Thumb模式:有2种方法。
一种是执行一条交换转移指令BX,将指令中的目标地址寄存器的最低位置1,并将其他位的值放入程序计数器PC,则可以进入Thumb指令。
ARM指令分类及寻址方式

〈immediate〉= immed_8循环右移(2 X rotate_imm)
8bit
最大为0xff
4bit(0—15)
范围:0—30
一个合法的立即数可能有多种编码方法。如0x3f0是一个合法的立即数,它可以 采用下面两种编码方法: Immed_8=0x3f,rotate_imm=0xe 或者 Immed_8=0xfc,rotate_imm=0xf ARM汇编编译器按照下面的规则来生成立即数的编码: 当立即数数值在0—0xff范围内时,令<immediate>=immed_8, rotate_imm=0 其它情况下,汇编编译器选择rotate_imm数值最小的编码方法
立即寻址,操作数不是存储在寄存器或存储器 中,而是包含在指令的操作码中,也就是说,数据 就包含在指令当中,取出指令也就取出了可以立即 程序存储 使用的操作数(这样的数称为立即数)。立即寻址指 MOV R0,#0xFF00 令举例如下: 从代码中获得数据
SUBS
MOV
R0,R0,#1 R0
;R0减1,结果放入R0,并且影响标志位 0xFF00 0x55
• 寻址方式分类——变址寻址
变址寻址就是将基址寄存器的内容与指令中给出的偏 移量相加,形成操作数的有效地址。变址寻址用于访问基 址附近的存储单元,常用于查表、数组操作、功能部件寄 0x4000000C 0xAA 存器访问等。变址寻址指令举例如下: LDR R2,[R3,#0x0C] ;读取R3+0x0C地址上的存储单元 将R3+0x0C作 R3 0x40000000 为地址装载数 ;的内容,放入R2,执行后R3 不变。 R2 0xAA 0x55 据 STR R1,[R0,#-4]! ;先R0=R0-4,然后把R1的值寄存 LDR
ARM嵌入式系统基础教程课后习题答案

第一章思考与练习1、举出3个书本中未提到的嵌入式系统的例子。
答:红绿灯控制,数字空调,机顶盒2、什么叫嵌入式系统嵌入式系统:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
3、什么叫嵌入式处理器?嵌入式处理器分为哪几类?嵌入式处理器是为完成特殊的应用而设计的特殊目的的处理器。
嵌入式微处理器(Embedded Microprocessor Unit, EMPU)嵌入式微控制器(Microcontroller Unit, MCU)嵌入式DSP 处理器(Embedded Digital Signal Processor, EDSP)嵌入式片上系统(System On Chip)4、什么是嵌入式操作系统?为何要使用嵌入式操作系统?是一段在嵌入式系统启动后首先执行的背景程序,首先,嵌入式实时操作系统提高了系统的可靠性。
其次,提高了开发效率,缩短了开发周期。
再次,嵌入式实时操作系统充分发挥了 32 位 CPU 的多任务潜力。
第二章1、嵌入式系统项目开发的生命周期分哪几个阶段?各自的具体任务是什么?项目的生命周期一般分为识别需求、提出解决方案、执行项目和结束项目4 个阶段。
识别需求阶段的主要任务是确认需求,分析投资收益比,研究项目的可行性,分析厂商所应具备的条件。
提出解决方案阶段由各厂商向客户提交标书、介绍解决方案。
执行项目阶段细化目标,制定工作计划,协调人力和其他资源;定期监控进展,分析项目偏差,采取必要措施以实现目标。
结束项目阶段主要包括移交工作成果,帮助客户实现商务目标;系统交接给维护人员;结清各种款项。
2、为何要进行风险分析?嵌入式项目主要有哪些方面的风险?在一个项目中,有许多的因素会影响到项目进行,因此在项目进行的初期,在客户和开发团队都还未投入大量资源之前,风险的评估可以用来预估项目进行可能会遭遇的难题。
需求风险;时间风险;资金风险;项目管理风险3、何谓系统规范?制定系统规范的目的是什么?规格制定阶段的目的在于将客户的需求,由模糊的描述,转换成有意义的量化数据。
嵌入式简答题
五、简答题简要阐述ARM的异常处理过程?(6分)答:当任何一个异常发生并得到相应时,ARM内核自动完成一下动作:1、将下一条指令的地址存入相应的连接寄存器中,以便程序正确返回。
(2分)2、将CPSR的值复制到SPSR中(1分)3、根据异常类型,强制设置CPSR的运行模式位(1分)4、设置PC使其从相应的异常向量地址取下一条指令执行,从而跳转到相应的异常处理程序处。
(2分)---------------------------------------------------------------------------1、嵌入式开发环境主要包括哪些组件?答:嵌入式系统开发需要交叉编译和在线调试的开发环境,主要包括●宿主机●目标机(评估电路板)●基于JTAG的ICD仿真器、或调试监控软件、或在线仿真器ICE●运行于宿主机的交叉编译器和链接器、以及开发工具链或软件开发环境●嵌入式操作系统2、ARM核中什么寄存器用于存储PC?R13通常用来存储什么?R14通常用来存储什么? 答:R15用于程序计数寄存器PC,R13通常用来做堆栈指针寄存器,R14通常用来做链接寄存器,保存函数调用的返回地址1、什么是大端格式,什么是小端格式,在RAM920T内核的系统中,常采用什么模式?答:在大端格式中,字数据的高字节存储在低地址单元中,而字数据的低字节则存放在高地址单元中。
在小端存储格式中,低地址单元中存放的是字数据的低字节,高地址单元存放的是字数据的高字节。
在基于ARM920T内核的嵌入式系统中,常用小端存储格式来储存字数据。
2、简述S3C2410的I/O端口的控制寄存器,数据寄存器、上拉电阻允许寄存器的作用?答:端口控制寄存器定义了每个管脚的功能如果端口被配置成了输出端口,可以向数据寄存器的相应位写数据。
如果端口被配置成了输入端口,可以从数据寄存器的相应位读出数据端口上拉寄存器控制了每个端口组的上拉电阻的允许/禁止。
嵌入式课后题答案
嵌入式课后答案第一章1. 什么是嵌入式系统?请列举几个常见的嵌入式系统。
答:根据国际电气和电子工程师协会(IEEE)的定义,嵌入式系统是控制、监视或者辅助设备、机器和生产线运行的装置(Devices used to control, monitor, or assist the operation of equipment, machinery or plants)。
这主要是从产品的应用角度加以定义的,由此可以看出嵌入式系统是软件和硬件的综合体,可以涵盖机械等附属装置。
目前被我国科学家普遍认同的定义是:嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可裁减,对功能、可靠性、成本、体积、功耗要求严格的专用计算机系统。
常见的嵌入式系统:手机,DVD,路由器,核磁共振仪,全自动洗衣机。
2.嵌入式系统与通用计算机有哪些区别?答:(1) 以应用为中心;(2) 以计算机技术为基础(3) 软件和硬件可裁减(4) 对系统性能要求严格(5)软件的固件化(6)需要专用的开发工具3.嵌入式系统的发展分为哪几个阶段?答:第一阶段:无操作系统的嵌入算法阶段。
第二阶段:以嵌入式CPU为基础,以简单操作系统为核心的嵌入式系统。
第三阶段:以嵌入式操作系统为标志的嵌入式系统。
第四阶段:以基于Internet为标志的嵌入式系统。
4.请列举嵌入式系统的主要应用领域。
答:(1)工业控制领域(2)交通运输领域(3)消费电子产品(4)家电领域(5)通信领域(6)商业和金融领域(7)环境监测领域(8)医疗领域(9)建筑领域(10)军事国防领域(11)航天航空领域第二章1. 简述简单嵌入式系统与复杂嵌入式系统的主要区别。
答:简单嵌入式系统很早就已经存在,这类嵌入式系统因为软硬件复杂度都很低,一般不使用操作系统,例如常用的单片机系统。
对于复杂的嵌入式系统,它的开发模式发生了极大的改变。
一个复杂的嵌入式系统不仅硬件系统的开发比单片机复杂了许多,更重要的是在该系统中采用了嵌入式操作系统,其应用软件的开发转变为使用操作系统标准接口的计算机工程领域的应用软件开发。
第3章_ARM指令系统
23
3.2 ARM指令的 寻址方式
堆栈寻址和多寄存器寻址有很多相似之处,可以说 堆栈寻址是多寄存器寻址的特例,堆栈操作的指令
也有一一对应的多寄存器访问指令,如下表所示。
递增 满 先增 增值 后增 先减 减值 后减 LDMDA LDMFA STMIB STMFA STMIA LDMIA 空 满 递减 空 LDMIB LDMED
、后索引偏移和自动索引之分。
零偏移----实际上就是寄存器间接寻址 前索引偏移: LDR R2, [R3, #0X12] ; [(R3)+ #0X12]送R2,R3值不变 后索引偏移: STR R2, [R3], #0X12; R2送[R3],R3+0X12送R3 自动索引: LDR R2, [R3,#0X12]!; [(R3)+ #0X12]送R2,R3+0X12送R3
存储器 R2 0X00009000 0X00009000
0X20
R1
0X20
13
3.2 ARM指令的寻址方式
(6)基址变址寻址
基址变址寻址是指操作数的有效地址是由寄存器的内容加
上指令中给出的变址来确定的;
操作数所在存储单元的基地址由寄存器给出,这个寄存器 就叫做基址寄存器。 变址既可以以立即数形式给出,也可以由寄存器来提供。
4
3.2 ARM指令的寻址方式
所谓寻址方式就是人们根据操作数所在位置、数据 类型及其数据结构的不同,人为规定的根据指令中
给出的信息找出操作数有效地址的方式。
根据操作数的种类不同,ARM寻址方式可以分为
数据操作数寻址方式和地址操作数寻址方式两大类
,其中,数据操作数又有立即数、寄存器操作数、 存储器操作数和I/O操作数之分。 操作的对象不同,所用的寻址方式也不同。
《嵌入式系统基础教程》第09讲第5章ARM指令集特点寻址方式和指令
标志
C=1,Z=0 C=0,Z=l
N=V N!=V Z=0,N=V Z=1,N!=V 任何 ARMv3之前
含义
无符号数大于 无符号数小于或等于 有符号数大于或等于 有符号数小于 有符号数大于 有符号数小于或等于 无条件执行(指令默认条件) 该指令从不执行
2008年6月28日
《嵌入式系统基础教程》第09讲第5 章ARM指令集特点寻址方式和指令
《嵌入式系统基础教程 》第09讲第5章ARM指 令集特点寻址方式和指
令
2023/5/9
《嵌入式系统基础教程》第09讲第5 章ARM指令集特点寻址方式和指令
第5章 ARM指令集和汇编语言程序
l 本章主要介绍以下内容:
l ARM指令集的基本特点 l 与Thumb指令集的区别 l 与x86处理器的区别 l ARM指令格式
l 举例:
l SUB R1,R1,R2 ;R1-R2→R1 l MOV PC,R0 ;PC←R0,程序跳转到指定地址 l LDR R0,[R1],-R2
;读取R1地址上的存储器单元内容并存入R0, ;且R1=R1-R2,后索引偏移 l AND R0,R5,R2 ;R2中存放的是第2操作数 ;该数据属于寄存器方式的第2操作数
运算指令能够访问存储器
2008年6月28日
《嵌入式系统基础教程》第09讲第5 章ARM指令集特点寻址方式和指令
ARM指令集的编码格式
l 参看ARM指令集编码格式PDF文件
2008年6月28日
《嵌入式系统基础教程》第09讲第5 章ARM指令集特点寻址方式和指令
ARM指令集的语法
l 一条典型的ARM指令语法如下所示:
寄存器寻址
l 操作数的值在寄存器中,指令中的地址码字段指 出的是寄存器编号,指令执行时直接取出寄存器 值来操作。寄存器寻址指令举例如下:
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
千锋嵌入式学院 最专业的嵌入式培训机构
相对寻址 目标地址 = pc 当前值 + 指令给出的标 号偏移地址 BL NEXT ;跳转到子程序NEXT 处执行 ...... NEXT ...... MOV PC,LR ;从子程序返回
千锋嵌入式学院 最专业的嵌入式培训机构
基址变址寻址 操作数地址 = 基址寄存器 + 指令 中给出的地址偏移 LDR R0,[R1,#4] ;R0←[R1+4] LDR R0,[R1,#4]! ;R0←[R1+4]、R1←R1 +4 LDR R0,[R1] ,#4 ;R0←[R1]、R1←R1+4 LDR R0,[R1,R2] ;R0←[R1+R2]
பைடு நூலகம்
千锋嵌入式学院 最专业的嵌入式培训机构
arm 微处理器支持这四种类型的堆栈工作方式。 - 满递增堆栈:堆栈指针指向最后压入的数据,且 由低地址向高地址生成。 - 满递减堆栈:堆栈指针指向最后压入的数据,且 由高地址向低地址生成。 - 空递增堆栈:堆栈指针指向下一个将要放入数据 的空位置,且由低地址向高地址生成。 - 空递减堆栈:堆栈指针指向下一个将要放入数据 的空位置,且由高地址向低地址生成。
千锋嵌入式学院 最专业的嵌入式培训机构
操作数在寄存器 ADD R0,R1,R2 ;R0←R1+R2
千锋嵌入式学院 最专业的嵌入式培训机构
寄存器间接寻址操作数的地址在寄存器 ADD R0,R1,[R2] ;R0←R1+[R2] LDR R0 [R1] ;R0←[R1] R0,[R1] R0←[R1] STR R0,[R1] ;[R1]←R0
千锋嵌入式学院 最专业的嵌入式培训机构
多寄存器寻址 类似寄存器寻址,此处是多个寄存 器而已 LDMIA R0 {R1 R2 R3 R4} ;R1←[R0] R0,{R1,R2,R3,R4} R1←[R0] ;R2←[R0+4] ;R3←[R0+8] ;R4←[R0+12]
千锋嵌入式学院 最专业的嵌入式培训机构
1、立即寻址 2、寄存器寻址 3、寄存器间接寻址 4、基址变址寻址 5、多寄存器寻址 6、相对寻址 7、堆栈寻址
千锋嵌入式学院 最专业的嵌入式培训机构
arm 指令的寻址方式 1、立即寻址 操作数在指令中直接给出 ADD R0,R0,#1 ;R0←R0+1 ADD R0,R0,#0x3f ;R0←R0+0x3f