(第3章 ARM寻址方式与指令系统) 11 12节_第1页
(第3章 ARM寻址方式与指令系统) 11 12节_第2页
(第3章 ARM寻址方式与指令系统) 11 12节_第3页
(第3章 ARM寻址方式与指令系统) 11 12节_第4页
(第3章 ARM寻址方式与指令系统) 11 12节_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、六、六、bootloader 外部中断非向量中断响应过程外部中断非向量中断响应过程六、六、bootloader 中断向量表中断向量表0 x00000018 六、六、bootloader IsrIRQ中断服务器程序中断服务器程序IsrIRQsub sp,sp,#4 ; 保留保留 PC stmfd sp!,r8-r9 ;将将r8,r9入栈入栈ldr r9,=I_ISPR ;中断寄存器地址中断寄存器地址=r9ldr r9,r9 ;读出中断寄存器读出中断寄存器I_ISPR的值,存入的值,存入R9中中mov r8,#0 x00 ;局部标号局部标号movs r9,r9,lsr #1 ;LSR 逻辑右移逻辑

2、右移bcs %F1 ; %F 向前搜索局部标号向前搜索局部标号 判断是否把置位判断是否把置位Cadd r8,r8,#4;根据根据I_ISPR的值的值 b %B0;判断该中断在普通中断向量表中的偏移量,存入判断该中断在普通中断向量表中的偏移量,存入R8 ;%B 向后搜索局部标号向后搜索局部标号1 ;局部标号局部标号ldr r9,=HandleADC ;HandleADC为普通中断向量表的起始地址,为普通中断向量表的起始地址,add r9,r9,r8;起始地址起始地址+偏移地址实际的中断向量地址偏移地址实际的中断向量地址ldr r9,r9;取出中断向量的值,即服务程序的地址取出中断向量的值,即服务

3、程序的地址str r9,sp,#8ldmfd sp!,r8-r9,pc;跳转到普通中断服务程序,开始执行跳转到普通中断服务程序,开始执行 六、六、bootloader 普通中断向量分配空间普通中断向量分配空间 外部中断包括的外部中断包括的26种普通中断的向量空间分配种普通中断的向量空间分配HandleADCHandleADC # # 4 4 HandleRTCHandleRTC# #4 4 HandleUTXD1HandleUTXD1# # 4 4 HandleUTXD0HandleUTXD0# # 4 4 . . . . . . . . . . . . HandleEINT3 HandleE

4、INT3 # # 4 4 HandleEINT2 HandleEINT2 # # 4 4 HandleEINT1 HandleEINT1 # #4 4 HandleEINT0 HandleEINT0 # # 4 ; 4 ; 3.2 3.2 指令格式指令格式 一、一、ARMARM汇编语言组成汇编语言组成1、汇编语言指令组成 机器指令:机器指令:ARM指令和指令和Thumb指令指令; 伪指令:伪指令: 宏指令:宏指令:2、指令含义 机器指令:能够被处理器直接执行的指令机器指令:能够被处理器直接执行的指令 伪指令:源程序汇编期间,由汇编程序执行伪指令:源程序汇编期间,由汇编程序执行 的指令的指令(定

5、义段,定义变量等定义段,定义变量等) 宏指令:宏指令: 是一段独立的程序代码,汇编时用宏体替代宏指令是一段独立的程序代码,汇编时用宏体替代宏指令3.2 3.2 指令格式指令格式 二、编码格式二、编码格式1、ARM汇编指令格式汇编指令格式(助记符格式助记符格式) ARM汇编指令:汇编指令: ADDEQS R0,R1,R2; 该指令的编码格式为:该指令的编码格式为: 3128272524212019161512110cond opcodeSRnRdop2000000101001000100000000000000103.2 3.2 指令格式指令格式 二、编码格式二、编码格式 S , 其中:其中:

6、是必选项是必选项 是可选项是可选项 操作码,如操作码,如ADD表示算术加操作指令;表示算术加操作指令; 决定指令执行的条件域;决定指令执行的条件域; S 决定指令执行是否影响决定指令执行是否影响CPSR寄存器的值;寄存器的值; 目的寄存器;目的寄存器; 第一个操作数,为寄存器;第一个操作数,为寄存器; 第二个操作数。第二个操作数。2、例如、例如 指令指令 ADDEQS R1,R2,5 二、编码格式二、编码格式 3 3、条件域条件域 几乎所有的几乎所有的ARM指令都可以根据当前程序状态寄存指令都可以根据当前程序状态寄存器器CPSR中标志位的值,有条件地执行。中标志位的值,有条件地执行。 ARM指

7、令的条件域指令的条件域有有16种类型。种类型。 二、编码格式二、编码格式 3 3、条件域条件域 二、编码格式二、编码格式 3 3、条件域条件域 三、三、 寻址方式寻址方式 9种:种: 立即数寻址立即数寻址 寄存器寻址寄存器寻址 寄存器移位寻址寄存器移位寻址 寄存器间接寻址寄存器间接寻址 基址变址寻址基址变址寻址 相对寻址相对寻址 多寄存器寻址多寄存器寻址 块拷贝寻址块拷贝寻址 堆栈寻址堆栈寻址 三、三、 寻址方式寻址方式 1、立即数寻址、立即数寻址 在立即数寻址中,操作数包含在指令中。称此种操在立即数寻址中,操作数包含在指令中。称此种操作数为立即数。作数为立即数。 #后接后接0 x或或&

8、;表示十六进制数或表示十六进制数或0b表示二进制数或表示二进制数或0d或缺省表示十进制数或缺省表示十进制数表示立即数。表示立即数。 例例: ADD R0,R1,5; R0=R15 MOV R0,0 x55; R0=0 x55 其中:操作数其中:操作数5,0 x55就是立即数,立即数在指令中就是立即数,立即数在指令中要以要以“”为前缀,后面跟实际数值。为前缀,后面跟实际数值。三、三、 寻址方式寻址方式 2、寄存器寻址、寄存器寻址 所有操作数都为寄存器所有操作数都为寄存器 例:例: ADD R0,R1,R2; R0=R1R2 MOV R0,R1; R0=R1三、三、 寻址方式寻址方式 3、寄存器、

9、寄存器移位寻址移位寻址 操作数由寄存器的数值做相应移位而得到。操作数由寄存器的数值做相应移位而得到。 移位的方式在指令中以助记符的形式给出,而移位移位的方式在指令中以助记符的形式给出,而移位的位数可用立即数或寄存器寻址方式表示。的位数可用立即数或寄存器寻址方式表示。 例:例: ADD R0,R1,R2,ROR 5 ;R0=R1R2循环右移循环右移5位位 MOV R0,R1,LSL R3 ;R0=R1逻辑左移逻辑左移R3位位 移位操作在移位操作在ARM指令集中指令集中不作为单独的指令使用不作为单独的指令使用,ARM指令集共有指令集共有5种位移操作种位移操作。ARM指令集的指令集的5种位移操作种位

10、移操作LSL逻辑左移逻辑左移 :Rx,LSL LSR逻辑右移逻辑右移 : Rx,LSR ASR算术右移算术右移 :Rx,ASR ROR循环右移循环右移 :Rx,ROR RRX带扩展的循环右移带扩展的循环右移:Rx,RRX 三、三、 寻址方式寻址方式 4、寄存器间接、寄存器间接寻址寻址 寄存器中的值为操作数的物理地址寄存器中的值为操作数的物理地址, ,而实际的而实际的操作数存放在此地址存储器中操作数存放在此地址存储器中。 例:例: STR R0,R1;R1=R0 LDR R0,R1;R0=R1三、三、 寻址方式寻址方式 5、基址变址寻址基址变址寻址 将寄存器(称为基址寄存器)的值与指令中将寄存器

11、(称为基址寄存器)的值与指令中给出的偏移地址量相加,所得结果作为操作给出的偏移地址量相加,所得结果作为操作数的物理地址。数的物理地址。 例:例: LDR R0,R1,5;R0=R1+5 LDR R0,R1,R2;R0=R1+R2三、三、 寻址方式寻址方式 6、相对寻址、相对寻址 相对寻址同基址变址寻址相似,区别只是将相对寻址同基址变址寻址相似,区别只是将程序计数器程序计数器PC作为基址寄存器,指令中的标作为基址寄存器,指令中的标记作为地址偏移量。记作为地址偏移量。 例:例: BEQ process1 process1 三、三、 寻址方式寻址方式 7、多寄存器寻址多寄存器寻址 在多寄存器寻址方式

12、中,一条指令可实现一组寄存器值在多寄存器寻址方式中,一条指令可实现一组寄存器值的传送。的传送。 连续的寄存器间用连续的寄存器间用“”连接,否则用连接,否则用“,”分隔。分隔。 例例: LDMIA R0,R1-R5 ;R1=R0 ;R2=R0+4 ;R3=R0+8 ;R4=R0+12 ;R5=R0+16 指令中指令中IA表示在执行完一次表示在执行完一次Load操作后,操作后,R0自增自增4。该。该指令将以指令将以R0为起始地址的为起始地址的5个字数据分别装入个字数据分别装入R1,R2,R3,R4,R5中。中。三、三、 寻址方式寻址方式 8、块拷贝寻址、块拷贝寻址 块拷贝寻址可实现连续地址数据从存

13、储器的某一位置拷贝块拷贝寻址可实现连续地址数据从存储器的某一位置拷贝到另一位置。到另一位置。 例例: LDR R0,=0 x40003000 LDR R1,=0 x40003200 LDMIA R0,R2-R6; STMIA R1,R2-R6; 第一条指令从以第一条指令从以R0的值为起始地址的存储单元中取出的值为起始地址的存储单元中取出5个个字的数据,第二条指令将取出的数据存入以字的数据,第二条指令将取出的数据存入以R1的值为起始的值为起始地址的存储单元中。地址的存储单元中。 实际上是多寄存器寻址的组合。实际上是多寄存器寻址的组合。三、三、 寻址方式寻址方式 9、堆栈寻址堆栈寻址 堆栈:按照堆

14、栈:按照“后进先出后进先出”(“(“先进后出先进后出”)”)的原则的原则进行数据存储的特定区域。进行数据存储的特定区域。 使用专门的寄存器(堆栈指针使用专门的寄存器(堆栈指针SP(R13)SP(R13))指向堆栈)指向堆栈栈顶。栈顶。 堆栈种类堆栈种类: :向上增长向上增长: :数据进栈,堆栈指针递增数据进栈,堆栈指针递增. .向下增长向下增长: :数据进栈,堆栈指针递减数据进栈,堆栈指针递减. . 满堆栈:堆栈指针指向最后压入堆栈的有效数据。满堆栈:堆栈指针指向最后压入堆栈的有效数据。 空堆栈空堆栈: :堆栈指针指向下一个要压入数据的地址。堆栈指针指向下一个要压入数据的地址。三、三、 寻址方

15、式寻址方式 9、堆栈寻址堆栈寻址 满递增满递增FA:FA:数据进栈,地址向上增长,堆栈指针指数据进栈,地址向上增长,堆栈指针指向含有有效数据的最高地址向含有有效数据的最高地址. . 满递减满递减FD:FD:数据进栈,地址向下递减,堆栈指针指数据进栈,地址向下递减,堆栈指针指向含有有效数据的最低地址向含有有效数据的最低地址. . 空递增空递增EA:EA:数据进栈,地址向上增长,堆栈指针指数据进栈,地址向上增长,堆栈指针指向含有有效数据的最高地址的下一个字地址向含有有效数据的最高地址的下一个字地址( (空地空地址址).). 空递减空递减ED:ED:数据进栈,地址向下增长,堆栈指针指数据进栈,地址向

16、下增长,堆栈指针指向含有有效数据的最地地址的下一个字地址向含有有效数据的最地地址的下一个字地址( (空地空地址址).).三、三、 寻址方式寻址方式 9、堆栈寻址堆栈寻址 堆栈寻址用于数据栈与寄存器组之间批量数据传输。堆栈寻址用于数据栈与寄存器组之间批量数据传输。 当当数据写入和读出内存的顺序不同时,使用堆栈寻址可以数据写入和读出内存的顺序不同时,使用堆栈寻址可以很好的解决这问题。很好的解决这问题。 例:例: STMFD R13!,R0,R1,R2,R3,R4; LDMFD R13!,R0,R1,R2,R3,R4 第一条指令,将第一条指令,将R0R4中的数据压入堆栈,中的数据压入堆栈,R13为堆

17、栈指为堆栈指针;针; 第二条指令,将数据出栈,恢复第二条指令,将数据出栈,恢复R0R4原先的值。原先的值。3.3 ARM指令集指令集6 6种类型(种类型(5353种主要助记符)种主要助记符) : 数据处理指令(数据处理指令(2222种主要助记符)种主要助记符) 跳转指令(跳转指令(4 4种主要助记符)种主要助记符) Load/Store指令(指令(1616种主要助记符)种主要助记符) 程序状态寄存器指令(程序状态寄存器指令(2 2种主要助记符)种主要助记符) 协处理器指令(协处理器指令(5 5种主要助记符)种主要助记符) 软件中断指令软件中断指令 (2 2种主要助记符)种主要助记符)一、数据处

18、理指令一、数据处理指令1MOV 数据传送指令数据传送指令 格式:格式:MOVS ,; 功能:功能:Rdop1 op1可以是寄存器、被移位的寄存器或立即数。可以是寄存器、被移位的寄存器或立即数。 例如:例如: MOV R0,5;R0=5 MOV R0,R1;R0=R1 MOV R0,R1,LSL5;R0=R1左移左移5位位 一、数据处理指令一、数据处理指令2MVN 数据取反传送指令数据取反传送指令 格式:格式:MVNS ,; 功能:功能:将将op1表示的值传送到目的寄存器表示的值传送到目的寄存器Rd中,中,但该值在传送前被按位取反,但该值在传送前被按位取反, Rd= !op1; op1可以是寄存

19、器、被移位的寄存器或立即数。可以是寄存器、被移位的寄存器或立即数。 例如:例如: MVN R0,0;R0=0 xFFFFFFFF 一、数据处理指令一、数据处理指令3ADD 加法指令加法指令 格式:格式:ADDS ,; 功能:功能:RdRn+op2 op2可以是寄存器,被移位的寄存器或立即数。可以是寄存器,被移位的寄存器或立即数。 例如:例如: ADD R0,R1,5;R0=R1+5 ADD R0,R1,R2;R0=R1+R2 ADD R0,R1,R2,LSL5;R0=R1+R2左移左移5位位 一、数据处理指令一、数据处理指令4ADC 带进位加法指令带进位加法指令 格式:格式:ADCS ,; 功

20、能:功能:Rd=Rn+op2+carry op2可以是寄存器、被移位的寄存器或立即数;可以是寄存器、被移位的寄存器或立即数;carry为进为进位标志值。该指令用于实现超过位标志值。该指令用于实现超过32位的数的加法。位的数的加法。 例如:例如: 第一个第一个64位操作数存放在位操作数存放在(R3,R2)中;中; 第二个第二个64位操作数存放在位操作数存放在(R5,R4)中;中; 64位结果存放在位结果存放在(R1,R0)中。中。 64位的加法可由以下语句实现:位的加法可由以下语句实现: ADDS R0,R2,R4;低低32位相加,位相加,S表示结果影响条表示结果影响条件标志位的值件标志位的值

21、ADC R1,R3,R5;高高32位相加位相加 一、数据处理指令一、数据处理指令5SUB 减法指令减法指令 格式:格式:SUBS ,; 功能:功能:RdRn-op2 op2可以是寄存器、被移位的寄存器或立即数。可以是寄存器、被移位的寄存器或立即数。 例如:例如: SUB R0,R1,5;R0=R1-5 SUB R0,R1,R2;R0=R1-R2 SUB R0,R1,R2,LSL5;R0=R1-R2左移左移5位位 一、数据处理指令一、数据处理指令6RSB 反向减法指令反向减法指令 格式:格式:RSBS ,; 功能:功能:同同SUB指令,但倒换了两操作数的前后位指令,但倒换了两操作数的前后位置,即

22、置,即Rdop2-Rn。 例如:例如: RSB R0,R1,5;R0=5-R1 RSB R0,R1,R2;R0=R2-R1 RSB R0,R1,R2,LSL5;R0=R2左移左移5位位-R1 一、数据处理指令一、数据处理指令7SBC 带借位减法指令带借位减法指令 格式:格式:SBCS ,; 功能:功能:RdRn-op2-!carry 解释解释 op2可以是寄存器、被移位的寄存器或立即数。可以是寄存器、被移位的寄存器或立即数。 SUB和和SBC生成进位标志的方式不同于常规,如果需要生成进位标志的方式不同于常规,如果需要借位则清除进位标志,所以指令要对进位标志进行一个非借位则清除进位标志,所以指令

23、要对进位标志进行一个非操作。操作。 应用:应用: 超过超过32位的减法运算位的减法运算 例如:两个例如:两个64位数相减位数相减第一个第一个64位操作数存放在位操作数存放在(R3,R2)中;中;第二个第二个64位操作数存放在位操作数存放在(R5,R4)中;中;64位结果存放在位结果存放在(R1,R0)中。中。64位的减法(第一个操作数减去第二个操作数)可由以下语句实现:位的减法(第一个操作数减去第二个操作数)可由以下语句实现:程序程序SUBS R0,R2,R4;低低32位相减,位相减,S表示结果影响条件标志位的值表示结果影响条件标志位的值SBC R1,R3,R5; 高高32位相减位相减 一、数

24、据处理指令一、数据处理指令8RSC 带借位的反向减法指令带借位的反向减法指令 格式:格式:RSCS ,; 功能:功能:同同SBC指令,但倒换了两操作数的前后位指令,但倒换了两操作数的前后位置,即置,即Rdop2-Rn-!carry。 例如:例如: 前提条件与前提条件与SBC例子相同,操作数例子相同,操作数1-操作数操作数2的实的实现语句需改为:现语句需改为: SUBS R0,R2,R4;低低32位相减,位相减,S表示结果影响表示结果影响寄存器寄存器CPSR的值的值 RSC R1,R5,R3;高高32位相减位相减 一、数据处理指令一、数据处理指令9MUL 32位乘法指令位乘法指令 格式:格式:M

25、ULS ,; 功能:功能:RdRnop2 该指令根据该指令根据S标志,决定操作是否影响标志,决定操作是否影响CPSR的值;其中的值;其中op2必须为寄存器。必须为寄存器。Rn和和op2的值为的值为32位的有符号数或无符位的有符号数或无符号数。号数。 例如:例如: MULS R0,R1,R2;R0R1R2,结果影响寄存器结果影响寄存器CPSR的的N,Z位位 一、数据处理指令一、数据处理指令10MLA 32位乘加指令位乘加指令 格式:格式:MLAS ,; 功能:功能:RdRnop2+op3 op2和和op3必须为寄存器。必须为寄存器。Rn、op2和和op3的值为的值为32位位的有符号数或无符号数。的有符号数或无符号数。 例如:例如:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论