微处理课件:chap9 ARM程序设计.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《微处理课件:chap9 ARM程序设计.ppt》由用户(罗嗣辉)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微处理课件:chap9 ARM程序设计 处理 课件 chap9 ARM 程序设计
- 资源描述:
-
1、微处理器系统结构与嵌入式系统设计微处理器系统结构与嵌入式系统设计1 1第九章第九章 ARMARM程序设计程序设计4学时学时微处理器系统结构与嵌入式系统设计微处理器系统结构与嵌入式系统设计第九章第九章 ARMARM程序设计程序设计9.1 ARM程序开发环境程序开发环境(掌握)(掌握)常用常用ARM程序开发环境简介程序开发环境简介RVDS开发环境简介开发环境简介9.2 汇编语言伪指令汇编语言伪指令(掌握)(掌握)符号定义伪指令符号定义伪指令数据定义伪指令数据定义伪指令汇编控制伪指令汇编控制伪指令其他常用伪指令其他常用伪指令汇编语言中常用的符号汇编语言中常用的符号常用的运算符和表达式常用的运算符和表
2、达式2 2微处理器系统结构与嵌入式系统设计微处理器系统结构与嵌入式系统设计第九章第九章 ARMARM程序设计程序设计9.3 ARM汇编语言程序设计汇编语言程序设计(掌握)(掌握)ARM汇编语言程序结构汇编语言程序结构ARM汇编语言程序实例汇编语言程序实例9.4 ARM汇编语言与汇编语言与C/C+的混合编程的混合编程(理解)(理解)C与汇编之间的函数调用与汇编之间的函数调用C/C+语言和汇编语言的混合编程语言和汇编语言的混合编程3 3微处理器系统结构与嵌入式系统设计微处理器系统结构与嵌入式系统设计9.1 ARM9.1 ARM常用开发环境常用开发环境n主要分为基于主要分为基于Windows平台的和
3、基于平台的和基于Linux平台平台的两大类的两大类 n基于基于Windows平台平台uADS ,目前已经基本被替代,目前已经基本被替代uRealView Developer Suite(RVDS) ,CodeWarrior IDERV DebuggeruEmbedded Workbench for ARM(EWARM) ,IAR System公司,入门简单,授权费用高公司,入门简单,授权费用高uRealView Microcontroller Development Kit(MDK) ,源自德国,源自德国Keil公司,多用于低端公司,多用于低端ARM处理器开发处理器开发n基于基于Linux平台
4、平台uARM-Linux-GCC ,GNU开发的编译器集,依赖于不同的目标机开发的编译器集,依赖于不同的目标机的平台,使用繁琐但不需要授权费用的平台,使用繁琐但不需要授权费用 4 4微处理器系统结构与嵌入式系统设计微处理器系统结构与嵌入式系统设计 RVDSRVDS开发环境简介开发环境简介 n替代替代ADS的新一代开发环境的新一代开发环境n集成编辑、编译及调试于一体集成编辑、编译及调试于一体 n支持软件仿真和硬件调试支持软件仿真和硬件调试 n支持汇编、支持汇编、C和和C+等多种源代码的编译等多种源代码的编译 n目前广泛应用于目前广泛应用于ARM处理器开发处理器开发n包括包括CodeWarrior
5、 IDE集成开发环境和集成开发环境和RVDebugger调试器两部分调试器两部分 5 5微处理器系统结构与嵌入式系统设计微处理器系统结构与嵌入式系统设计CodeWarrior IDECodeWarrior IDE的主窗口的主窗口 6 6微处理器系统结构与嵌入式系统设计微处理器系统结构与嵌入式系统设计RVDRVD调试器主窗口调试器主窗口 7 7微处理器系统结构与嵌入式系统设计微处理器系统结构与嵌入式系统设计汇编语言程序汇编语言程序n计算机硬件只能接收和识别二进制编码形式的机计算机硬件只能接收和识别二进制编码形式的机器指令,器指令,把助记符指令一一翻译成机器指令把助记符指令一一翻译成机器指令,并,
6、并且在翻译的过程中还要完成且在翻译的过程中还要完成程序区地址程序区地址、数据区数据区地址地址和和转移目标地址转移目标地址的的安排安排以及文件的连接等工以及文件的连接等工作,最后才能把程序以机器码的形式输入计算机作,最后才能把程序以机器码的形式输入计算机去运行。上述这些工作称为去运行。上述这些工作称为汇编汇编。 n专门用来进行汇编的软件称为专门用来进行汇编的软件称为汇编器汇编器。n用于用于指导汇编器指导汇编器进行进行汇编工作的指令汇编工作的指令,由于这些,由于这些指令不形成机器码指令,只是在汇编器进行汇编指令不形成机器码指令,只是在汇编器进行汇编工作的过程中起作用,所以称其为工作的过程中起作用,
7、所以称其为伪指令伪指令。 8 8微处理器系统结构与嵌入式系统设计微处理器系统结构与嵌入式系统设计汇编语言程序汇编语言程序n伪指令、宏指令和前面学过的助记符指令,再加伪指令、宏指令和前面学过的助记符指令,再加上相应的语言规范,就形成了一种新的程序设计上相应的语言规范,就形成了一种新的程序设计语言语言汇编语言汇编语言(Assembly Language)(Assembly Language) n用汇编语言编写的程序就称为汇编语言用汇编语言编写的程序就称为汇编语言源程序源程序,而自源程序翻译成的机器码程序就称为而自源程序翻译成的机器码程序就称为目标程序目标程序n目标程序还要经过系统的链接定位后才能生
8、成真正的目标程序还要经过系统的链接定位后才能生成真正的可执可执行文件行文件(.EXE.EXE文件)。汇编的一般步骤:文件)。汇编的一般步骤:u编辑得到源程序编辑得到源程序u汇编得到目标代码(解决语法错误)汇编得到目标代码(解决语法错误)u链接得到可执行文件(解决定位错误)链接得到可执行文件(解决定位错误) u调试得到功能正确的应用软件(解决逻辑错误)调试得到功能正确的应用软件(解决逻辑错误)9 9微处理器系统结构与嵌入式系统设计微处理器系统结构与嵌入式系统设计汇编语言程序设计特点汇编语言程序设计特点n汇编语言汇编语言依赖于机器硬件依赖于机器硬件,不同,不同CPU提供的汇编提供的汇编指令可能有很
9、大的不同,汇编源程序指令可能有很大的不同,汇编源程序几乎不具有几乎不具有可移植性可移植性;n汇编语言汇编语言比机器语言易于读写、调试和修改比机器语言易于读写、调试和修改;n具有机器语言执行具有机器语言执行速度快、效率高、占内存空间速度快、效率高、占内存空间少少等优点等优点n在编写复杂程序时,在编写复杂程序时,相对高级语言而言代码量较相对高级语言而言代码量较大大;汇编语言源程序汇编语言源程序机器语言程序机器语言程序(目标代码)(目标代码)汇编(汇编程序)汇编(汇编程序)高级语言源程序高级语言源程序编译或解释(编译程序)编译或解释(编译程序)1010微处理器系统结构与嵌入式系统设计微处理器系统结构
10、与嵌入式系统设计9.2 9.2 符号定义伪指令符号定义伪指令 11 11符号符号类型类型指示符指示符 符号符号定义定义伪指伪指令令GBLAGBLLGBLSLCLALCLLLCLSSETASETLSETSRLISTCNCPDNSNFN功能功能声明和初始化一个声明和初始化一个全局全局算术算术变量,初始值为变量,初始值为0声明和初始化一个声明和初始化一个全局全局逻辑逻辑变量,初始值为变量,初始值为FALSE声明和初始化一个声明和初始化一个全局全局字符串字符串变量,初始值为空变量,初始值为空声明和初始化一个声明和初始化一个局部局部算术变量,初始值为算术变量,初始值为0。局部算术变量只能在。局部算术变量
11、只能在宏中进行声明宏中进行声明。声明和初始化一个声明和初始化一个局部局部逻辑变量,初始值为逻辑变量,初始值为FALSE。局部逻辑变量只能在。局部逻辑变量只能在宏中宏中进行声明。进行声明。声明和初始化一个声明和初始化一个局部局部字符串变量,初始值为空。局部字符串变量只能在字符串变量,初始值为空。局部字符串变量只能在宏中进宏中进行声明行声明。给一个局部或全局给一个局部或全局算术算术变量置值变量置值给一个局部或全局给一个局部或全局逻辑变量逻辑变量置值置值给一个局部或全局给一个局部或全局字符串变量字符串变量置值置值给给寄存器集寄存器集命名命名给一个协处理器寄存器命名给一个协处理器寄存器命名给一个特定协
12、处理器命名,协处理器号为给一个特定协处理器命名,协处理器号为015给一个双精度给一个双精度VFP寄存器命名寄存器命名给一个单精度给一个单精度VFP寄存器命名寄存器命名给一个特定的浮点寄存器命名给一个特定的浮点寄存器命名微处理器系统结构与嵌入式系统设计微处理器系统结构与嵌入式系统设计GBLA Test1;声明全局算术变量声明全局算术变量Test1,赋值为,赋值为0 xaa Test1 SETA 0 xaaGBLL Test2;声明全局逻辑变量声明全局逻辑变量Test2,赋值为,赋值为“真真” Test2 SETL TRUEGBLS Test3;声明全局字符串变量为声明全局字符串变量为Test3,
13、赋值为,赋值为Testing“ Test3 SETS Testing“LCLA Test4; 声明局部数字变量声明局部数字变量Test4,赋值为,赋值为0 xaa Test4 SETA 0 xaaLCLL Test5; 声明局部逻辑变量声明局部逻辑变量Test5 ,赋值为,赋值为“真真” Test5 SETL TRUELCLS Test6;声明局部字符串变量声明局部字符串变量Test6 ,赋值为,赋值为Testing“ Test6 SETS Testing“RegList RLIST R0-R5, R8, R10; 声明寄存器列表声明寄存器列表RegList,LDM/STM指令可通过该名称访问
14、寄存器列表指令可通过该名称访问寄存器列表1212微处理器系统结构与嵌入式系统设计微处理器系统结构与嵌入式系统设计数据定义伪指令数据定义伪指令 数 据数 据定义定义伪 指伪 指令令LTORG指示汇编器指示汇编器汇编当前文字池汇编当前文字池 或或MAP置置存储映射存储映射的起点的起点到一个特定的地址到一个特定的地址# 或或FIELD描述指示符所定义的存储映射中的空间描述指示符所定义的存储映射中的空间% 或或SPACE定义一块定义一块值为值为0的存储器区域的存储器区域= 或或DBC分配一个或多个分配一个或多个字节字节& 或或DCD分配一个或多个分配一个或多个字,字,从从4字节边界字节边界开始开始DC
15、DU分配一个或多个分配一个或多个字字,但,但不一定从不一定从4字节边界字节边界开始开始DCDO分配以分配以字边界开始的存储区域字边界开始的存储区域,并指定初始值为到静态基址寄存器,并指定初始值为到静态基址寄存器的偏移的偏移DCFD分配给分配给双精度浮点数双精度浮点数一段一段以字边界以字边界开始的内存区域开始的内存区域DCFDU分配给分配给双精度浮点数双精度浮点数一段以一段以任意边界任意边界开始的内存区域开始的内存区域DCFS分配给分配给单精度浮点数单精度浮点数一段以一段以字边界字边界开始的内存区域开始的内存区域DCFSU分配给分配给单精度浮点数单精度浮点数一段以一段以任意边界任意边界开始的内存
16、区域开始的内存区域DCI分配以分配以字边界开始字边界开始的存储区域,并的存储区域,并指定初始值指定初始值。标记此地址存储的。标记此地址存储的是代码而不是数据是代码而不是数据DCQ分配给分配给双精度浮点数双精度浮点数一段以一段以4字节边界字节边界开始的内存区域开始的内存区域DCQU分配给分配给双精度浮点数双精度浮点数一段以一段以任意边界任意边界开始的内存区域开始的内存区域DCW分配给一个或多个分配给一个或多个半字半字以以半字边界半字边界开始的内存区域开始的内存区域DCWU分配给一个或多个分配给一个或多个半字半字以以任意边界任意边界开始的内存区域开始的内存区域DATA标识一个标识一个标号是代码段中
17、数据的标号标号是代码段中数据的标号,该符号后是,该符号后是DCBDCB或或DCDDCD1313微处理器系统结构与嵌入式系统设计微处理器系统结构与嵌入式系统设计数据定义伪指令1414Str DCB “This is a test!” ; 分配一片连续的分配一片连续的字节存储单元字节存储单元并初始化并初始化GBLL Test2DataTest DCW 1, 2, 3; 分配一片连续的分配一片连续的半字存储单元半字存储单元并初始化并初始化DataTest DCD 4, 5, 6; 分配一片连续的分配一片连续的字存储单元字存储单元并初始化并初始化FdataTest DCFD 2E115, -5E7;
18、分配一片连续的分配一片连续的双字存储单元双字存储单元并初始化并初始化;为指定的为指定的双精度数双精度数FdataTest DCFS 2E5, -5E-7; 分配一片连续的分配一片连续的字存储单元字存储单元并初始化并初始化;为指定的为指定的单精度数单精度数DataTest DCQ 100 ; 分配一片连续的存储单元分配一片连续的存储单元(8字节字节)并初始化为指定的值并初始化为指定的值DataSpace SPACE 100; 分配连续分配连续100字节的存储单元并初始化为字节的存储单元并初始化为0MAP 0 x100, R0; 定义结构化内存表首地址的值为定义结构化内存表首地址的值为0 x100
19、+R0 画出存储单元分配示意图并且填写内容?各个变量起始地址值?画出存储单元分配示意图并且填写内容?各个变量起始地址值?微处理器系统结构与嵌入式系统设计微处理器系统结构与嵌入式系统设计数据定义伪指令1515下面的伪操作序列下面的伪操作序列定义一个内存表定义一个内存表,其,其首地址为首地址为固定地址固定地址4096(0 x1000),该内,该内存表中包含存表中包含5个数据字段:个数据字段:A长度为长度为4个字节;个字节;B长度为长度为4个字节;个字节;X长度为长度为8个个字节;字节;Y长度为长度为8个字节;个字节;String长度为长度为256个字节。这种内存表称为基于绝对个字节。这种内存表称为
20、基于绝对地址的内存表。地址的内存表。MAP 0 x1000; 内存表首地址的值为内存表首地址的值为0 x1000A FIELD 4; 定义定义A的长度为的长度为4字节,位置为字节,位置为0 x1000B FIELD 4; 定义定义B的长度为的长度为4字节,位置为字节,位置为0 x1004X FIELD 8; 定义定义X的长度为的长度为8字节,位置为字节,位置为0 x1008Y FIELD 8; 定义定义Y的长度为的长度为8字节,位置为字节,位置为0 x1010String FIELD 256; 定义定义String的长度为的长度为256字节,位置为字节,位置为0 x1018LDR R6, A
21、; 该指令仅仅可以访问指令前面或该指令仅仅可以访问指令前面或(后面后面)4KB地址地址;范围的数据字段范围的数据字段基于绝对地基于绝对地址的内存表址的内存表微处理器系统结构与嵌入式系统设计微处理器系统结构与嵌入式系统设计定义一个内存表,其首址为固定地址与定义一个内存表,其首址为固定地址与R9R9和,表中包含同样字段。和,表中包含同样字段。MAP MAP 0, R9 0, R9 ; ; 内存表首地址为内存表首地址为0 0与与R9R9寄存器内容的和寄存器内容的和A A FIELD FIELD 4 4; ; 定义定义A A的长度为的长度为4 4字节,相对位置为字节,相对位置为0 0B B FIELD
22、 FIELD 4 4; ; 定义定义B B的长度为的长度为4 4字节,相对位置为字节,相对位置为4 4X X FIELD FIELD 8 8; ; 定义定义X X的长度为的长度为8 8字节,相对位置为字节,相对位置为8 8Y YFIELD FIELD 8 8; ; 定义定义Y Y的长度为的长度为8 8字节,相对位置为字节,相对位置为1616String String FIELD FIELD 256256; ; 定义定义StringString为为256256字节,相对位置为字节,相对位置为2424ADR ADR R9, DATASTARTR9, DATASTART;伪指令;伪指令ADR ADR
23、 初始化初始化R9 R9 LDR LDR R5, B R5, B ; ; 相当于相当于LDR R5, R9, #4LDR R5, R9, #4可访问地址范围可访问地址范围超过超过4 KB4 KB的数据的数据基于相对地基于相对地址的内存表址的内存表定义一个内存表,其首址为定义一个内存表,其首址为PCPC的值,表中包含同样字段。的值,表中包含同样字段。Dstruc Dstruc SPACE SPACE 280280; ; 分配分配280280个字节单元个字节单元MAP MAP Dstruc Dstruc ; ; 内存表首地址为内存表首地址为DstrucDstrucA A FIELDFIELD4 4
24、; ; 定义定义A A的长度为的长度为4 4字节,相对位置为字节,相对位置为0 0B B FIELDFIELD4 4; ; 定义定义B B的长度为的长度为4 4字节,相对位置为字节,相对位置为4 4X X FIELDFIELD8 8; ; 定义定义X X的长度为的长度为8 8字节,相对位置为字节,相对位置为8 8Y Y FIELDFIELD8 8; ; 定义定义Y Y的长度为的长度为8 8字节,相对位置为字节,相对位置为1616String String FIELDFIELD256256; ; 定义定义StringString为为256256字节,相对位置为字节,相对位置为2424LDR LD
25、R R5, B R5, B ; ; 相当于相当于LDR R5, PC, #4LDR R5, PC, #4基于基于PCPC的的内存表内存表可访问地址范围不可访问地址范围不超过超过4 KB4 KB的数据的数据1616微处理器系统结构与嵌入式系统设计微处理器系统结构与嵌入式系统设计汇编控制伪指令汇编控制伪指令 GBLA Counter ; 声明全局的数字变量声明全局的数字变量Counter Counter SETA 3; 由变量由变量Counter控制循环次数控制循环次数WHILE Counter YX大于YX = YX大于等于YX = YX小于等于YX /= YX不等于YX YX不等于YX:LAN
展开阅读全文