嵌入式系统讲义.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《嵌入式系统讲义.ppt》由会员分享,可在线阅读,更多相关《嵌入式系统讲义.ppt(207页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、嵌入式系统讲义嵌入式系统讲义第第3章章 ARM指令系统指令系统周国运周国运2007.3第第3章章 ARM指令系统指令系统主要内容主要内容3.1 ARM指令结构指令结构3.2 ARM寻址方式寻址方式3.3 ARM指令集指令集3.4 Thumb指令集指令集3.5 ARM伪指令伪指令3.6 ARM汇编语言程序设计汇编语言程序设计3.1 ARM指令系统概述指令系统概述主要内容主要内容一、指令系统概念一、指令系统概念 二、二、ARMARM指令的特点指令的特点三、三、ARMARM指令的格式指令的格式四、指令的条件码四、指令的条件码3.1 ARM指令系统概述指令系统概述一、指令系统概念一、指令系统概念 指令
2、:指令:是规定计算机进行某种操作的命令。是规定计算机进行某种操作的命令。指令系统:指令系统:计算机能够执行的各种指令的集合。计算机能够执行的各种指令的集合。二、二、ARMARM指令的特点指令的特点所有指令都是所有指令都是3232位的。位的。大多数指令都在单周期内完成。大多数指令都在单周期内完成。所有指令都可以条件执行。所有指令都可以条件执行。ARMARM指令为指令为load/storeload/store类型。类型。基本指令仅基本指令仅3636条,分成五类。条,分成五类。有有7 7种寻址方式。种寻址方式。指令集可以通过协处理器扩展。指令集可以通过协处理器扩展。ARMARM指令是加载指令是加载/
3、存储存储(Load/Store)(Load/Store)型:型:也即指令集仅能处理寄存器中的数据,而且处也即指令集仅能处理寄存器中的数据,而且处理结果都要放回寄存器中,而对系统存储器的访问理结果都要放回寄存器中,而对系统存储器的访问则需要通过专门的加载则需要通过专门的加载/存储指令来完成。存储指令来完成。ARMARM指令可以分为五大类:指令可以分为五大类:数据处理指令、存储器访问指令、分支指令、数据处理指令、存储器访问指令、分支指令、协处理器指令、杂项指令。协处理器指令、杂项指令。ARMARM指令有指令有7 7种寻址方式:种寻址方式:立即寻址、寄存器寻址、寄存器间接寻址、基立即寻址、寄存器寻址
4、、寄存器间接寻址、基址寻址、堆栈寻址址寻址、堆栈寻址、块拷贝寻址、相对寻址。、块拷贝寻址、相对寻址。三、三、ARMARM指令的格式指令的格式ARMARM指令基本的语法格式为:指令基本的语法格式为:ss ,OpcodeOpcode:指令操作码。指令操作码。condcond:指令的条件码。:指令的条件码。S S:决定指令的操作是否影响:决定指令的操作是否影响cpsrcpsr的值。的值。RdRd:目标寄存器编码。目标寄存器编码。RnRn:包含第一个操作数的寄存器编码。包含第一个操作数的寄存器编码。Operand2Operand2:第:第2 2操作数。操作数。ARMARM指令典型的编码格式为:指令典型
5、的编码格式为:(数据处理指令类)(数据处理指令类)CondOpcodeSRnRdOperand2011121516192021242527283178 例:例:ADDS R2,R1,#1SUBNES R2,R1,#0 x20LDR R0,R1四、指令的条件码四、指令的条件码 条条件件码码的的位位数数和和位位置置:每每条条ARMARM指指令令包包含含4 4位位条条件件码码域域,它它占占用用指指令令编编码码的的最最高高四四位位3131:2828。条条件件码码的的表表示示:条条件件编编码码共共 2 24 4 16 16 种种,其其中中,1515种种用用于于指指令令的的条条件件码码。每每种种条条件件码
6、码用用2 2个个英英文文缩缩写字符表示。(见写字符表示。(见P47 P47 表表2-62-6)带带条条件件指指令令的的执执行行:ARMARM处处理理器器根根据据指指令令的的执执行条件是否满足,决定当前指令是否执行。行条件是否满足,决定当前指令是否执行。只只有有在在cpsrcpsr中中的的条条件件标标志志位位满满足足指指定定的的条条件件时时,指指令令才才会会被被执执行行。不不符符合合条条件件的的代代码码依依然然占占用用一一个个时钟周期(相当于一个时钟周期(相当于一个NOPNOP指令)。指令)。条条件件码码的的书书写写方方法法:条条件件码码的的位位置置在在指指令令助助记记符的后面(因此也称为条件后
7、缀)。符的后面(因此也称为条件后缀)。例如:例如:MOVMOVEQEQ R0,R1 R0,R1指令条件码表指令条件码表条件码条件码助记符助记符含含 义义标标 志志0000EQ相等相等Z=10001NE不相等不相等Z=00010CS/HS无符号数大于或等于无符号数大于或等于C=10011CC/LO无符号数小于无符号数小于C=00100MI负数负数N=10101PI非负数非负数N=00110VS溢出溢出V=10111VC没有溢出没有溢出V=01000HI无符号数大于无符号数大于C=1且且Z=01001LS无符号数小于或等于无符号数小于或等于C=0或或Z=11010GE有符号数大于或等于有符号数大于
8、或等于N=V1011LT有符号数小于有符号数小于N!=V1100GT有符号数大于有符号数大于Z=0且且N=V1101LE有符号数小于或等于有符号数小于或等于Z=1或或N!=V1110AL无条件执行无条件执行任意任意1111保留保留v5以下版本总执行以下版本总执行,v5及以上版本有用及以上版本有用3.2 ARM寻址方式寻址方式主要内容主要内容一、一、立即寻址立即寻址二、寄存器寻址二、寄存器寻址三、寄存器间接寻址三、寄存器间接寻址四、基址寻址四、基址寻址五、堆栈寻址五、堆栈寻址 六、块拷贝寻址六、块拷贝寻址七、相对寻址七、相对寻址3.2 ARM寻址方式寻址方式寻址方式:处理器根据指令中给出的(地址
9、)寻址方式:处理器根据指令中给出的(地址)信息,寻找操作数(物理地址)的方式。信息,寻找操作数(物理地址)的方式。我们将我们将ARMARM指令系统的寻址方式分为指令系统的寻址方式分为7 7种(有种(有分为分为9 9种的等)。种的等)。3.2.1 立即寻址立即寻址立即寻址也叫立即数寻址。立即寻址也叫立即数寻址。立即寻址概念:立即寻址概念:操作数本身就在指令中给出,只操作数本身就在指令中给出,只要取出指令也就取到了操作数。这个操作数被称为立要取出指令也就取到了操作数。这个操作数被称为立即数,对应的寻址方式也就叫做立即寻址。即数,对应的寻址方式也就叫做立即寻址。ADD R0,R0,1;R0R01 M
10、OVMOV R0 R0,0 x3f0 x3f;R0R00 x3f0 x3f书写立即数时,要求以书写立即数时,要求以“”为前缀。为前缀。十六进制数,后加十六进制数,后加 0 x0 x或或&,&,如如#0 x3f,#&3f.#0 x3f,#&3f.二进制数,二进制数,后加后加 0b,0b,如如#0b1011#0b1011十进制数,十进制数,#后加后加 0d0d或缺省或缺省,如如#0d678,#789#0d678,#789 如何构造如何构造3232位立即数?位立即数?在指令格式中,第二个操作数有在指令格式中,第二个操作数有12位位:因此有效立即数因此有效立即数immediateimmediate可以
11、表示成:可以表示成:=immed_8=immed_8 循环右移(循环右移(2 2rotrot)4 bit 移位值移位值(0-15)乘于乘于2,得到一个范围在,得到一个范围在0-30,步长为步长为 2的移位值。的移位值。因此,将因此,将ARM中的立即数中的立即数称为称为8位位图位位图。记住一条准则:记住一条准则:“最后最后8位移动偶数位位移动偶数位”得到立得到立即数。即数。Immed_8rot12 11 8 7 0Shifter RORimmediate031ror#0 ror#8 ror#30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0
12、 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 07例:例:下列命令中,汇编器把立即数转换为移位操作下列命令中,汇编器把立即数转换为移位操作:MOV R0,#4096;uses 0 x40 ror 26 ADD R1,R2,#0 xFF0000;uses 0 xFF ror 16带有立即数的带有立即数的MOV 指令的二进制编码为:指令的二进制编码为:MOV R0,#0 xF200 ;E3A00CF2.MOV R1,#0 x110000 ;E3A01811.MOV R
13、4,#0 x12800 ;E3A04B4A.0 xF200=0 xF2循环右移(循环右移(2*C)0 x110000=0 x11循环右移(循环右移(2*8)0 x12800=0 x4A循环右移(循环右移(2*B)只有能够通过此构造方法得到的才是合法的立即数只有能够通过此构造方法得到的才是合法的立即数。合法立即数合法立即数:0 xFF;0 x104(其(其8位图为位图为0 x41););0 xFF0;0 xFF00非法立即数:非法立即数:0 x101;0 x102;0 xFF1深入理解:深入理解:一个合法的立即数可能有多种编码方法,将一个合法的立即数可能有多种编码方法,将使某些指令的执行产生不同
14、的结果。使某些指令的执行产生不同的结果。如如 0 x3F0ARM汇编编译器生成立即数的规则为:汇编编译器生成立即数的规则为:当立即数数值在当立即数数值在0到到0 xFF范围时,令范围时,令immed_8=,rot=0。其它情况下,汇编编译器选择使其它情况下,汇编编译器选择使rot数值最小的编码方式。数值最小的编码方式。immed_8=0 x3F,rot=0 xE,对,对3F左移左移4位位immed_8=0 xFC,rot=0 xF,对,对FC左移左移2位位3.2.2 寄存器寻址寄存器寻址寄存器寻址:寄存器寻址:利用寄存器中的数值作为操作数利用寄存器中的数值作为操作数。这种寻址方式是各类微处理器
15、经常采用的一种方这种寻址方式是各类微处理器经常采用的一种方式,也是一种执行效率较高的寻址方式。式,也是一种执行效率较高的寻址方式。两种具体形式:两种具体形式:寄存器寻址、寄存器移位寻址。寄存器寻址、寄存器移位寻址。一、一、寄存器寻址寄存器寻址如指令:如指令:ADDR0,R1,R2;R0R1R2 二、寄存器移位寻址二、寄存器移位寻址 1、寄存器移位寻址、寄存器移位寻址当第二操作数为寄存器型时,在执行寄存器寻址操作时,当第二操作数为寄存器型时,在执行寄存器寻址操作时,也可以对第二操作数寄存器进行移位,此时也可以对第二操作数寄存器进行移位,此时第二操作数第二操作数形式形式为:为:MOV Rd,Rn,
16、Rm,其中:其中:Rm 称为第二操作数寄存器称为第二操作数寄存器 用来指定移位类型和移位位数,有两种形式:用来指定移位类型和移位位数,有两种形式:F 5位立即数位立即数(其值小于(其值小于32)F 寄存器寄存器(用用Rs表示表示)(其值小于(其值小于32)在在指指令令执执行行时时将将寄寄存存器器移移位位后后的的内内容容作作为为第第二二操操作作数数参参与运算。例如指令:与运算。例如指令:ADD R3,R2,R1,LSR#2;R3R2+(R1右移右移2位位)ADD R3,R2,R1,LSR R0;R3R2+(R1右移右移R0位位)2、第二操作数移位方式、第二操作数移位方式共有共有6种移位方式:种移
17、位方式:LSL 逻辑左移逻辑左移 LSR 逻辑右移逻辑右移 ASL 算术左移算术左移 ASR 算术右移算术右移 ROR 循环右移循环右移 RRX 带扩展的循环右移带扩展的循环右移(1)LSL:逻辑左移:逻辑左移,空出的最低有效位用,空出的最低有效位用0填充。填充。031 00(2)LSR:逻辑右移:逻辑右移,空出的最高有效位用,空出的最高有效位用0填充。填充。31 0SUB R3,R2,R1,LSL#2;R3R2-(R1左移左移2位位)SUB R3,R2,R1,LSR R0;R3R2-(R1右移右移R0位位)(3)ASL:算术左移算术左移,由于左移空出的有效,由于左移空出的有效位用位用0填充,
18、因此它与填充,因此它与LSL同义。同义。(4)ASR:算术右移算术右移(Arithmetic Shift Right)。算术移位的对象是带符号数,移位过程算术移位的对象是带符号数,移位过程中必须保持操作数的符号不变。如果源操作数是中必须保持操作数的符号不变。如果源操作数是正数,空出的最高有效位用正数,空出的最高有效位用0填充,如果是负填充,如果是负数用数用1填充。填充。30 0 ADD R3,R2,R1,ASL#2;R3R2+(R1左移左移2位位)SUB R3,R2,R1,ASR R3;R3R2-(R1算术右移算术右移R3位位)(5)ROR:循环右移循环右移(Rotate Right),移出的
19、字的最低移出的字的最低有效位依次填入空出的最高有效位。有效位依次填入空出的最高有效位。31 0 (6)RRX:带进位位的循环右移带进位位的循环右移(Rotate Right Extended)。将寄存器的内容将寄存器的内容循环右移循环右移1位位,空位用原来,空位用原来C标标志位填充。志位填充。31 0 CSUB R3,R2,R1,ROR#2;R3R2+(R1循环右移循环右移2位位)SUB R3,R2,R1,RRX R0;R3R2-(R1带进位位循环右移带进位位循环右移R0位位)3、第二操作数的移位位数、第二操作数的移位位数 移位位数可以用立即数方式或者寄存器方式给出移位位数可以用立即数方式或者
20、寄存器方式给出,其,其值均小于值均小于32,应为,应为0-31。如下所示:如下所示:ADD R3,R2,R1,LSR#2;R3R2+(R1右移右移2位位)ADD R3,R2,R1,LSR R4;R3R2+(R1右移右移R4位位)寄存器寄存器R1的内容分别逻辑右移的内容分别逻辑右移2位、位、R4位位,再与寄存再与寄存器器R2的内容相加,结果放入的内容相加,结果放入R3中。中。3.2.3 寄存器间接寻址寄存器间接寻址寄存器间接寻址寄存器间接寻址就是以就是以寄存器中的值作为操作数的地址寄存器中的值作为操作数的地址,而操,而操作数本身存放在存储单元中。例如以下指令:作数本身存放在存储单元中。例如以下指
21、令:LDRR0,R1;R0R1 STRR0,R1;R1R0第一条指令将以第一条指令将以R1的值为地址的存储单元中的内容的值为地址的存储单元中的内容加载到寄存器加载到寄存器R0中。中。第二条指令将第二条指令将R0的内容存储到以的内容存储到以R1的值为地址的存的值为地址的存储单元中。储单元中。R1基址寄存器基址寄存器 R1的内容的内容基地址基地址3.2.4 变址寻址变址寻址一、变址寻址一、变址寻址也叫基址加偏(变)址寻址也叫基址加偏(变)址寻址 将将基址寄存器基址寄存器的内容与指令中给出的的内容与指令中给出的地址偏移量地址偏移量相加相加,得到操作数所在的存储器的有效地址。,得到操作数所在的存储器的
22、有效地址。变址寻址方式常用于访问某基地址附近的地址单元。变址寻址方式常用于访问某基地址附近的地址单元。(4K)例如:例如:LDR R0,R1,4 ;R0mem32R14CondOpcodeRnRdOffset0111215161920272831二、偏移地址方式二、偏移地址方式有三种加偏址的方式有三种加偏址的方式1、前变址模式、前变址模式(不修改基址寄存器):(不修改基址寄存器):先基址先基址+偏址,生成操作数地址,做偏址,生成操作数地址,做指令指定的操作指令指定的操作。也叫也叫前索引偏移前索引偏移。0 x05R10 x200基址基址寄存器寄存器0 x200R00 x05源源 寄存器寄存器偏移
23、量偏移量120 x20C Pre-indexed:STR r0,r1,#122、自动变址模式、自动变址模式(修改基址寄存器修改基址寄存器):先基址先基址+偏移,生成操作数地址,偏移,生成操作数地址,做指令指定的操作。做指令指定的操作。然后自动修改基址寄存器。然后自动修改基址寄存器。例如:例如:LDR R0,R1,4!;R0mem32 R14;R1R14 !表示更新基址寄存器表示更新基址寄存器。3、后变址模式、后变址模式(修改基址寄存器修改基址寄存器):基址寄存器不加偏移作为操作数地址。基址寄存器不加偏移作为操作数地址。完成指令操作后,用完成指令操作后,用(基址基址+偏移偏移)的值修改基址的值修
24、改基址寄存器寄存器。即先用基地址传数,然后修改基地址(基址即先用基地址传数,然后修改基地址(基址+偏移),也叫偏移),也叫后索引偏移后索引偏移。0 x5r10 x200原基址原基址寄存器寄存器0 x200r00 x5源源 寄存器寄存器偏移量偏移量120 x20cr10 x20c更新基更新基址寄存器址寄存器例例 Post-indexed:STR r0,r1,#12三、偏移地址形式三、偏移地址形式 可可以以是是一一个个立立即即数数,也也可可以以是是另另一一个个寄寄存存器器,并并且且还还可可以以是是寄寄存存器器移移位位操操作作。如如下下所所示:示:LDR r0,r1,r2 ;r0mem32r1+r2
25、LDR r0,r1,r2,LSL#2;r0mem32r1+r2*4常用的是立即数偏移的形式。常用的是立即数偏移的形式。3.2.5 堆栈寻址堆栈寻址堆栈寻址堆栈寻址 堆栈寻址是隐含的,它使用一个专门的堆栈寻址是隐含的,它使用一个专门的寄存器(堆栈指针寄存器(堆栈指针SP)指向一块存储区域)指向一块存储区域(堆堆栈栈)。堆栈可分为两种增长方式:堆栈可分为两种增长方式:向上生长:向上生长:向高地址方向生长,称为向高地址方向生长,称为递增递增堆栈堆栈。向下生长:向下生长:向低地址方向生长,称为向低地址方向生长,称为递减递减堆栈堆栈。根据堆栈指针指向的数据位置的不同,可分为:根据堆栈指针指向的数据位置的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 系统 讲义
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内