版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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 逻辑右移bcs %F1 ; %F 向前搜索部分标号 判别能否把置位Cadd r8,r8,#4;根据I_ISPR的值 b %B0;
2、判别该中断在普通中断向量表中的偏移量,存入R8 ;%B 向后搜索部分标号1 ;部分标号ldr r9,=HandleADC;HandleADC为普通中断向量表的起始地址,add r9,r9,r8;起始地址+偏移地址实践的中断向量地址ldr r9,r9;取出中断向量的值,即效力程序的地址str r9,sp,#8ldmfd sp!,r8-r9,pc;跳转到普通中断效力程序,开场执行 .六、bootloader 普通中断向量分配空间外部中断包括的26种普通中断的向量空间分配HandleADC # 4 HandleRTC#4 HandleUTXD1# 4 HandleUTXD0# 4 . . . . .
3、 . HandleEINT3 # 4 HandleEINT2 # 4 HandleEINT1 #4 HandleEINT0 # 4 ; .3.2 指令格式 一、ARM汇编言语组成1、汇编言语指令组成机器指令:ARM指令和Thumb指令;伪指令:宏指令:2、指令含义机器指令:可以被处置器直接执行的指令伪指令:源程序汇编期间,由汇编程序执行 的指令(定义段,定义变量等)宏指令: 是一段独立的程序代码,汇编时用宏体替代宏指令.3.2 指令格式 二、编码格式1、ARM汇编指令格式(助记符格式)ARM汇编指令: ADDEQS R0,R1,R2; 该指令的编码格式为: 312827252421201916
4、1512110condopcodeSRnRdop200000010100100010000000000000010.3.2 指令格式 二、编码格式 S , 其中:是必选项是可选项 操作码,如ADD表示算术加操作指令; 决议指令执行的条件域;S 决议指令执行能否影响CPSR存放器的值; 目的存放器; 第一个操作数,为存放器; 第二个操作数。2、例如 指令 ADDEQS R1,R2,5 .二、编码格式 3、条件域几乎一切的ARM指令都可以根据当前程序形状存放器CPSR中标志位的值,有条件地执行。ARM指令的条件域有16种类型。 .二、编码格式 3、条件域.二、编码格式 3、条件域.三、 寻址方式
5、9种:立刻数寻址存放器寻址存放器移位寻址存放器间接寻址 基址变址寻址相对寻址 多存放器寻址 块拷贝寻址 堆栈寻址 .三、 寻址方式 1、立刻数寻址在立刻数寻址中,操作数包含在指令中。称此种操作数为立刻数。#后接0 x或&表示十六进制数或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.三、
6、 寻址方式 3、存放器移位寻址操作数由存放器的数值做相应移位而得到。移位的方式在指令中以助记符的方式给出,而移位的位数可用立刻数或存放器寻址方式表示。例: ADD R0,R1,R2,ROR 5 ;R0=R1R2循环右移5位 MOV R0,R1,LSL R3 ;R0=R1逻辑左移R3位移位操作在ARM指令集中不作为单独的指令运用,ARM指令集共有5种位移操作。.ARM指令集的5种位移操作LSL逻辑左移 :Rx,LSL LSR逻辑右移 : Rx,LSR ASR算术右移 :Rx,ASR ROR循环右移 :Rx,ROR RRX带扩展的循环右移:Rx,RRX .三、 寻址方式 4、存放器间接寻址存放器中
7、的值为操作数的物理地址,而实践的操作数存放在此地址存储器中。例: STR R0,R1;R1=R0 LDR R0,R1;R0=R1.三、 寻址方式 5、基址变址寻址将存放器称为基址存放器的值与指令中给出的偏移地址量相加,所得结果作为操作数的物理地址。例: LDR R0,R1,5;R0=R1+5 LDR R0,R1,R2;R0=R1+R2.三、 寻址方式 6、相对寻址相对寻址同基址变址寻址类似,区别只是将程序计数器PC作为基址存放器,指令中的标志作为地址偏移量。例: BEQ process1 process1 .三、 寻址方式 7、多存放器寻址在多存放器寻址方式中,一条指令可实现一组存放器值的传送
8、。延续的存放器间用“衔接,否那么用“,分隔。例: 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、块拷贝寻址块拷贝寻址可实现延续地址数据从存储器的某一位置拷贝到另一位置。例: LDR R0,=0 x40003000 LDR R1,=0 x40003200 LDMIA R0,R2-R6; STMIA R1,R2-R6;第一条指令从以R0的值为起始地址的存储单元中取出5个字的数据
9、,第二条指令将取出的数据存入以R1的值为起始地址的存储单元中。实践上是多存放器寻址的组合。.三、 寻址方式 9、堆栈寻址堆栈:按照“后进先出(“先进后出)的原那么进展数据存储的特定区域。运用专门的存放器堆栈指针SP(R13)指向堆栈栈顶。堆栈种类:向上增长:数据进栈,堆栈指针递增.向下增长:数据进栈,堆栈指针递减.满堆栈:堆栈指针指向最后压入堆栈的有效数据。空堆栈:堆栈指针指向下一个要压入数据的地址。.三、 寻址方式 9、堆栈寻址满递增FA:数据进栈,地址向上增长,堆栈指针指向含有有效数据的最高地址.满递减FD:数据进栈,地址向下递减,堆栈指针指向含有有效数据的最低地址.空递增EA:数据进栈,
10、地址向上增长,堆栈指针指向含有有效数据的最高地址的下一个字地址(空地址).空递减ED:数据进栈,地址向下增长,堆栈指针指向含有有效数据的最地地址的下一个字地址(空地址).三、 寻址方式 9、堆栈寻址堆栈寻址用于数据栈与存放器组之间批量数据传输。当数据写入和读出内存的顺序不同时,运用堆栈寻址可以很好的处理这问题。例: STMFD R13!,R0,R1,R2,R3,R4; LDMFD R13!,R0,R1,R2,R3,R4第一条指令,将R0R4中的数据压入堆栈,R13为堆栈指针;第二条指令,将数据出栈,恢复R0R4原先的值。.3.3 ARM指令集6种类型53种主要助记符 :数据处置指令22种主要助
11、记符跳转指令4种主要助记符Load/Store指令16种主要助记符程序形状存放器指令2种主要助记符协处置器指令5种主要助记符软件中断指令 2种主要助记符.一、数据处置指令1MOV 数据传送指令格式:MOVS ,;功能:Rdop1op1可以是存放器、被移位的存放器或立刻数。例如:MOV R0,5;R0=5MOV R0,R1;R0=R1MOV R0,R1,LSL5;R0=R1左移5位 .一、数据处置指令2MVN 数据取反传送指令格式:MVNS ,;功能:将op1表示的值传送到目的存放器Rd中,但该值在传送前被按位取反, Rd= !op1;op1可以是存放器、被移位的存放器或立刻数。例如:MVN R
12、0,0;R0=0 xFFFFFFFF .一、数据处置指令3ADD 加法指令格式:ADDS ,;功能:RdRn+op2op2可以是存放器,被移位的存放器或立刻数。例如:ADD R0,R1,5;R0=R1+5ADD R0,R1,R2;R0=R1+R2ADD R0,R1,R2,LSL5;R0=R1+R2左移5位 .一、数据处置指令4ADC 带进位加法指令格式:ADCS ,;功能:Rd=Rn+op2+carryop2可以是存放器、被移位的存放器或立刻数;carry为进位标志值。该指令用于实现超越32位的数的加法。例如:第一个64位操作数存放在(R3,R2)中;第二个64位操作数存放在(R5,R4)中;
13、64位结果存放在(R1,R0)中。64位的加法可由以下语句实现:ADDS R0,R2,R4;低32位相加,S表示结果影响条件标志位的值ADC R1,R3,R5;高32位相加 .一、数据处置指令5SUB 减法指令格式:SUBS ,;功能:RdRn-op2op2可以是存放器、被移位的存放器或立刻数。例如:SUB R0,R1,5;R0=R1-5SUB R0,R1,R2;R0=R1-R2SUB R0,R1,R2,LSL5;R0=R1-R2左移5位 .一、数据处置指令6RSB 反向减法指令格式:RSBS ,;功能:同SUB指令,但倒换了两操作数的前后位置,即Rdop2-Rn。例如:RSB R0,R1,5
14、;R0=5-R1RSB R0,R1,R2;R0=R2-R1RSB R0,R1,R2,LSL5;R0=R2左移5位-R1 .一、数据处置指令7SBC 带借位减法指令格式:SBCS ,;功能:RdRn-op2-!carry解释 op2可以是存放器、被移位的存放器或立刻数。 SUB和SBC生成进位标志的方式不同于常规,假设需求借位那么去除进位标志,所以指令要对进位标志进展一个非操作。运用: 超越32位的减法运算例如:两个64位数相减第一个64位操作数存放在(R3,R2)中;第二个64位操作数存放在(R5,R4)中;64位结果存放在(R1,R0)中。64位的减法第一个操作数减去第二个操作数可由以下语句
15、实现:程序SUBS R0,R2,R4;低32位相减,S表示结果影响条件标志位的值SBC R1,R3,R5;高32位相减 .一、数据处置指令8RSC 带借位的反向减法指令格式:RSCS ,;功能:同SBC指令,但倒换了两操作数的前后位置,即Rdop2-Rn-!carry。例如:前提条件与SBC例子一样,操作数1-操作数2的实现语句需改为:SUBS R0,R2,R4;低32位相减,S表示结果影响存放器CPSR的值RSC R1,R5,R3;高32位相减 .一、数据处置指令9MUL 32位乘法指令格式:MULS ,;功能:RdRnop2该指令根据S标志,决议操作能否影响CPSR的值;其中op2必需为存
16、放器。Rn和op2的值为32位的有符号数或无符号数。例如:MULS R0,R1,R2;R0R1R2,结果影响存放器CPSR的N,Z位 .一、数据处置指令10MLA 32位乘加指令格式:MLAS ,;功能:RdRnop2+op3op2和op3必需为存放器。Rn、op2和op3的值为32位的有符号数或无符号数。例如:MLA R0,R1,R2,R3;R0R1R2+R3 .11SMULL 64位有符号数乘法指令格式: SMULLS ,;功能:Rdh RdlRnop2Rdh、Rdl和op2均为存放器。Rn和op2的值为32位的有符号数。例如:SMULL R0,R1,R2,R3;R0R2R3的低32位;R1R2R3的高32位 一、数据处置指令.12SMLAL 64位有符号数乘加指令格式: SMLALS ,;功能:Rdh RdlRnop2+Rdh RdlRdh、Rdl和op2均为存放器。Rn和op2的值为32位的有符号数,Rdh Rdl的值为64位的加数。例如:SMLAL R0,R1,R2,R3;R0R2R3的低32位+R0;R1R2R3的高32位+R1 一、数据处置指令.13UMU
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 重医大实验核医学教学大纲
- 速冻果蔬制作工岗后模拟考核试卷含答案
- 2026年工业互联网 绿色制造项目公司成立分析报告
- 2026年工业互联网设备更新服务项目可行性研究报告
- 2026年光伏电站保险项目可行性研究报告
- 2026年家电以旧换新项目可行性研究报告
- 2026年人形机器人商业化落地项目可行性研究报告
- 2026年储能安全主动防御项目可行性研究报告
- 2026年含氟高分子材料(PTFEPVDF)项目可行性研究报告
- 2026年云存储数据备份合同
- 2026 昆明市高三市统测 三诊一模 英语试卷
- 市政设施巡查及维护方案
- 大型活动安保工作预案模板
- 2025年文化遗产数字化保护与开发:技术创新与经济效益研究报告
- 1.2 宪法的内容和作用 课件 (共28张) 八年级道法下册
- 山西焦煤考试题目及答案
- 加盟酒店合同范本
- (2025版)成人肺功能检查技术进展及临床应用指南解读课件
- 《春秋》讲解课件
- 铁路信号基础设备维护实训指导课件 5.认识25Hz相敏轨道电路
- T-ZGKSL 022-2025 头皮毛发健康理疗师职业能力评价规范
评论
0/150
提交评论