03 嵌入式汇编程序设计基础

上传人:飞*** 文档编号:52168570 上传时间:2018-08-18 格式:PPT 页数:69 大小:426.50KB
返回 下载 相关 举报
03 嵌入式汇编程序设计基础_第1页
第1页 / 共69页
03 嵌入式汇编程序设计基础_第2页
第2页 / 共69页
03 嵌入式汇编程序设计基础_第3页
第3页 / 共69页
03 嵌入式汇编程序设计基础_第4页
第4页 / 共69页
03 嵌入式汇编程序设计基础_第5页
第5页 / 共69页
点击查看更多>>
资源描述

《03 嵌入式汇编程序设计基础》由会员分享,可在线阅读,更多相关《03 嵌入式汇编程序设计基础(69页珍藏版)》请在金锄头文库上搜索。

1、嵌入式ARM系统原理与实例开发嵌入式ARM系统原理与实例开发北京大学出版社 出版杨宗德 编著2007年7月Date1北京大学出版社出版 杨宗德编著嵌入式ARM系统原理与实例开发1 12 2ARM处理器工作模式及寄存器功能ARM寻址方式3 3ARM指令及应用程序设计第3章 ARM程序设计基础 4 4ARM伪指令及应用程序设计5 5ARM汇编程序设计实例Date2北京大学出版社出版 杨宗德编著嵌入式ARM系统原理与实例开发ARM处理器模式 除用户模式之外的其余6种称为非用户模式 (特权模式) 在特权模式中,除系统模式之外的其余5种又称为异常模式 不同的工作模式间可以相互切换。工作模式功能M4:0用

2、户模式(usr)正常的程序执行状态10000快速中断模式(fiq)用于高速数据传输或通道处理10001外部中断模式(irq)用于通用的中断处理10010管理模式(svc)操作系统的保护模式10011中止模式(abt)用于虚拟存储及存储保护10111未定义指令模式und用于支持硬件协处理器的软件仿真11011系统模式(sys)运行特权级的操作系统任务11111Date3北京大学出版社出版 杨宗德编著嵌入式ARM系统原理与实例开发 ARM处理器的寄存器User/SystemSupervisorAbortUndefinedInterruptFast InterruptR0R0R0R0R0R0 R1R

3、1R1R1R1R1 R2R2R2R2R2R2 R3R3R3R3R3R3 R4R4R4R4R4R4 R5R5R5R5R5R5 R6R6R6R6R6R6 R7R7R7R7R7R7 R8R8R8R8R8R8_FIQ R9R9R9R9R9R9_FIQ R10R10R10R10R10R10_FIQR11R11R11R11R11R11_FIQR12R12R12R12R12R12_FIQR13R13_SVCR13_ABORT R13_UNDEFR13_IRQR13_FIQR14R14_SVCR14_ABORTR14_UNDEFR14_IRQR14_FIQPCPCPCPCPCPCCPSRCPSRCPSRCPS

4、RCPSRCPSRSPSR_SVCSPSR_ABORTSPSR_UNDEFSPSR_IRQSPSR_FIQ为什么需要R13,R14,SPSR?Date4北京大学出版社出版 杨宗德编著嵌入式ARM系统原理与实例开发ARM的寄存器组织 1.通用寄存器:包括R0R15,以及程序计数器PC . R0R7称为不分组寄存器; R8R12有两组物理寄存器。 一组属于快速模式(R8_fiqR12_fiq) 另一组属于其它模式(R8_usrR12_usr) ; R13和R14有6组物理寄存器。 其中用户模式和系统模式共用一组 寄存器R13通常作为堆栈指针SP (stack pointer) 寄存器R14常用作连

5、接寄存器LR(link register); 寄存器R15,又称为PC (program counter)Date5北京大学出版社出版 杨宗德编著嵌入式ARM系统原理与实例开发 ARM的寄存器组织2.状态寄存器: 当前程序状态寄存器CPSR (current program status Register),可以在任何工作模式下被访问; 程序状态备份寄存器SPSR (Saved Program Status Register),只有在异常模式下,才能被访问 ;Date6北京大学出版社出版 杨宗德编著嵌入式ARM系统原理与实例开发 CPSR/SPSR 条件标志(Condition Code Fl

6、ags) N = ALU计算结果为负数(Negative result from ALU(Arithmetic Logical Unit ) flag)。 Z = ALU计算结果为0(Zero result from ALU flag)。 C = ALU计算结果进位(ALU operation Carried out)。 For an addition, including CMN, C =1 if produced a carry. For a subtraction, including CMP, C0 if produced a borrow. V = ALU计算结果溢出(ALU ope

7、ration Overflowed)。 QE DSP (preserve and restore the CPSR Q flag if an exception occurs about enhanced DSP instructions.) 中断禁止位(Interrupt Disable bits) I = 1,关IRQ。 F = 1,关FIQ。 T Bit (Architecture v4T only) T = 0, 处理器当前处于ARM状态(Processor in ARM state) T = 1, 处理器当前处于Thumb状态(Processor in Thumb state)Dat

8、e7北京大学出版社出版 杨宗德编著嵌入式ARM系统原理与实例开发不同模式下可以访问的寄存器 Date8北京大学出版社出版 杨宗德编著嵌入式ARM系统原理与实例开发ARM异常处理 异常类型具体含义FIQ当处理器的快速中断请求引脚有效,且CPSR中的F位为0时,产 生FIQ异常 IRQ当处理器的外部中断请求引脚有效,且CPSR中的I位为0时,产 生IRQ异常 异常中断当外部的ABORT输入产生时,发生异常断软件中断该异常由执行SWI指令产生,可用于用户模式下的程序调用特 权操作指令,可使用该异常机制实现系统功能调用复位当处理器的复位电平有效时,产生复位异常,程序跳转到复位 异常处理程序处执行未定义

9、指 令当ARM处理器或协处理器遇到不能处理的指令时,产生未定义 指令异常。可使用该异常机制进行软件仿真Date9北京大学出版社出版 杨宗德编著嵌入式ARM系统原理与实例开发异常向量表 地 址异 常进入模式中断优先级0x0000,0000复位管理模式10x0000,0004无定义指令无定义模式60x0000,000C中止(预取指令)中止模式50x0000,0010中止(预取数据)中止模式20x0000,0018IRQIRQ40x0000,001CFIQFIQ30x0000,0014保留保留-0x0000,0008软件中断管理模式-Date10北京大学出版社出版 杨宗德编著嵌入式ARM系统原理与实

10、例开发ARM指令编码方式 S , , 其中,R0Date15北京大学出版社出版 杨宗德编著嵌入式ARM系统原理与实例开发寄存器寻址 MOV R1, R2 ; R2-R1 SUBR0, R1, R2 ; R1-R2-R0Date16北京大学出版社出版 杨宗德编著嵌入式ARM系统原理与实例开发基地址变址寻址 LDR R2,R3,#0x0F ;R2R30x0F STR R1,R0,#-2;R1R0-2 LDR R0,R1,4!;R0R14、R1R14Date17北京大学出版社出版 杨宗德编著嵌入式ARM系统原理与实例开发寄存器偏移寻址 MOV R0,R2,LSL #3 ;R2的值左移3位,结果放入R

11、0,即R0=R2*8 ANDS R1,R1,R2,LSL R3 ;R2的值左移R3位,然后和R1相与操作,结果放入 R1Date18北京大学出版社出版 杨宗德编著嵌入式ARM系统原理与实例开发寄存器间接寻址LDR R1,R2 ; R1R2 ADDR1,R1,R2; R1R1+R2 Date19北京大学出版社出版 杨宗德编著嵌入式ARM系统原理与实例开发多寄存器寻址 LDMIA R1,R2,R12 ; R2R1,R12R2+4Date20北京大学出版社出版 杨宗德编著嵌入式ARM系统原理与实例开发1 12 2ARM处理器工作模式及寄存器功能ARM寻址方式3 3ARM指令及应用程序设计第3章 AR

12、M程序设计基础 4 4ARM伪指令及应用程序设计5 5ARM汇编程序设计实例Date21北京大学出版社出版 杨宗德编著嵌入式ARM系统原理与实例开发mov指令及例程 MOVS , 数据传送指令 MVNS , 数据取反传送指令 Date22北京大学出版社出版 杨宗德编著嵌入式ARM系统原理与实例开发加減法指令及例程ADDS , 加法指令 Rd=op1 ADCS , 带进位的加法指令 Rd=!op1 SUBS , 减法指令 Rd=Rn+op2 RSBS , 反向减法指令 Rd=Rn+op2+carry SBCS , 带借位减法指令 Rd=Rn-op2 RSCS , 带借位的反向减法指令 Rd=op

13、2-Rn Date23北京大学出版社出版 杨宗德编著嵌入式ARM系统原理与实例开发加減法指令及例程AREAEXAMPLE3,CODE,READONLY;/*声明一段名为EXAMPLE3的 CODE*/ ENTRY;/*指定函数的入口*/ START MOVR0,#0xFF;/*把#0xFF传送到R0*/MOVR1,#0xEF000000;/*把#0XEF000000传送到 R1*/ MOVR2,#0x2F000000;/*把#0x2F000000传送到 R2*/ MVNR3,#0Xff;/*把#0xFF取反后传送到 R3*/ ADDR4,R2,R1;/*把R2加R1的值传送到 R4*/ ADD

14、SR5,R2,R1;/*把R2加R1的值传送到R5,s表示会影响cpsr*/ ADCSR6,R2,R1;/*把R2加R1的值,再加上carry的值后传送到 R6. ;s表示值会影响cpsr*/ Date24北京大学出版社出版 杨宗德编著嵌入式ARM系统原理与实例开发加減法指令及例程SUBR4,R2,R1;/R2减R1的值传送到 R4*/ SUBSR4,R2,R1;/*R2减R1的值传送到R4, ;s表示值会影响cpsr*/ RSBR5,R2,R1;/*R1减R2的值传送到 R5*/ RSBSR5,R2,R1;/*R1减R2的值后传送到R5, ; s表示会影响cpsr*/ SBCR6,R1,R2

15、;/*R1减R2的值再减去 !CARRY ;后传送到R6*/ RSCR7,R1,R2;/*R2减R1的值再减去 !CARRY;后传送到R7*/ stop BLstop END;/*end of the program*/Date25北京大学出版社出版 杨宗德编著嵌入式ARM系统原理与实例开发逻辑指令及例程 ANDS , 逻辑与指令 Rd=Rn AND op2 ORRS , 逻辑或指令 Rd=Rn OR op2 EORS , 逻辑异或指令 Rd=Rn EOR op2 BIC S , 位清除指令 Rd=Rn AND (!op2) Date26北京大学出版社出版 杨宗德编著嵌入式ARM系统原理与实例开发逻辑指令及例程 AREA EXAMPLE3,CODE,READONLY;/*声明一段名为 EXAMPLE3的代码*/ ENTRY START MOVR0,#0xF8;/*对R0 赋值 #0XF8*/ MOVR1,#0X0F;/*对R1 赋值 #0X0F*/ AND R2,R1,R0;/*R2=R1/*R3=R1|R0*/ ORR R4,R1,R0;/*R4=R1R0*/ BICR5,R1,R0;/*R5=R1/*死循环*/endDate27北京大学出版社出版 杨宗德编著嵌入式ARM系统原理与实例开发乘法指令及例程

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号