ARM汇编语言程序设计习题.ppt
《ARM汇编语言程序设计习题.ppt》由会员分享,可在线阅读,更多相关《ARM汇编语言程序设计习题.ppt(115页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第5章章 ARM指令集和汇编语言程序指令集和汇编语言程序n n本章主要介绍以下内容:本章主要介绍以下内容:n nARMARM汇编语言程序格式汇编语言程序格式汇编语言程序格式汇编语言程序格式n n典型典型典型典型ARMARM汇编语言程序举例汇编语言程序举例汇编语言程序举例汇编语言程序举例n nARMARM汇编与汇编与汇编与汇编与C C,C+C+混合编程混合编程混合编程混合编程1嵌入式系统开发中汇编语言设计的意义嵌入式系统开发中汇编语言设计的意义n n汇编语言程序设计更能充分发挥处理器的硬件汇编语言程序设计更能充分发挥处理器的硬件汇编语言程序设计更能充分发挥处理器的硬件汇编语言程序设计更能充分发
2、挥处理器的硬件特性特性特性特性n n两个优势两个优势两个优势两个优势n n操作系统移植需要编写几百行底层硬件的操作系统移植需要编写几百行底层硬件的操作系统移植需要编写几百行底层硬件的操作系统移植需要编写几百行底层硬件的汇编语言程序,这是汇编语言程序,这是汇编语言程序,这是汇编语言程序,这是C C语言不可取代的。语言不可取代的。语言不可取代的。语言不可取代的。n n优化算法的时空效率,优化算法的时空效率,优化算法的时空效率,优化算法的时空效率,C C语言的目标代码优语言的目标代码优语言的目标代码优语言的目标代码优化是编译器完成的,而汇编语言的目标代化是编译器完成的,而汇编语言的目标代化是编译器完
3、成的,而汇编语言的目标代化是编译器完成的,而汇编语言的目标代码优化是人工完成的。人是算法的创造者,码优化是人工完成的。人是算法的创造者,码优化是人工完成的。人是算法的创造者,码优化是人工完成的。人是算法的创造者,也是编译器的设计者,人工优化比编译器也是编译器的设计者,人工优化比编译器也是编译器的设计者,人工优化比编译器也是编译器的设计者,人工优化比编译器质量高。质量高。质量高。质量高。n n弱点弱点弱点弱点n n编程效率低,开发周期长,经济代价大。编程效率低,开发周期长,经济代价大。编程效率低,开发周期长,经济代价大。编程效率低,开发周期长,经济代价大。25.1 ARM汇编语言程序格式汇编语言
4、程序格式n n两种两种ARM汇编语言格式汇编语言格式n nARM汇编语言程序格式主要有两种:汇编语言程序格式主要有两种:n n基于基于基于基于ADS1.2ADS1.2集成开发环境的汇编器格式集成开发环境的汇编器格式集成开发环境的汇编器格式集成开发环境的汇编器格式n n包括包括包括包括SDTSDT在内,统称为在内,统称为在内,统称为在内,统称为ADSADSn n基于基于基于基于LinuxLinux的的的的GNUGNU汇编器格式汇编器格式汇编器格式汇编器格式n n在本章主要介绍基于在本章主要介绍基于ARM公司公司ADS集成开集成开发环境汇编器格式的汇编语言程序设计。发环境汇编器格式的汇编语言程序设
5、计。n n在后面将介绍基于在后面将介绍基于GNU汇编器的汇编器的ARM汇编汇编语言程序编写方法。语言程序编写方法。3预定义寄存器名及内部变量名预定义寄存器名及内部变量名n nARM汇编器中将几十个寄存器名称作为保汇编器中将几十个寄存器名称作为保留字预先给与了定义,这些预定义寄存器留字预先给与了定义,这些预定义寄存器名都是大小写敏感的,它们都与具体的寄名都是大小写敏感的,它们都与具体的寄存器一一对应。参看下面的表格。存器一一对应。参看下面的表格。4ARM公司公司ADS预定义的寄存器名一览表预定义的寄存器名一览表预预预预定定定定义义义义寄存器名寄存器名寄存器名寄存器名描述描述描述描述r0-r15
6、and R0-r0-r15 and R0-R15R15ARMARM处处处处理器的通用寄存器理器的通用寄存器理器的通用寄存器理器的通用寄存器a1-a4a1-a4入口参数,入口参数,入口参数,入口参数,处处处处理理理理结结结结果,果,果,果,暂暂暂暂存寄存器;存寄存器;存寄存器;存寄存器;r0-r3r0-r3的同的同的同的同义词义词义词义词v1-v8v1-v8变变变变量寄存器,量寄存器,量寄存器,量寄存器,r4-r11r4-r11sb and SBsb and SB静静静静态态态态基址寄存器,基址寄存器,基址寄存器,基址寄存器,r9r9sl and SLsl and SL栈栈栈栈界限寄存器,界限寄
7、存器,界限寄存器,界限寄存器,r10r10fp and FPfp and FP帧帧帧帧指指指指针针针针寄存器,寄存器,寄存器,寄存器,r11r11ip and IPip and IP内部内部内部内部过过过过程程程程调调调调用用用用暂暂暂暂存寄存器,存寄存器,存寄存器,存寄存器,r12r12sp and SP sp and SP 栈指针寄存器,栈指针寄存器,栈指针寄存器,栈指针寄存器,r13 r13 5ARM公司公司ADS预定义的寄存器名预定义的寄存器名一览表(续)一览表(续)预预预预定定定定义义义义寄存器名寄存器名寄存器名寄存器名描述描述描述描述lr and LRlr and LR连连连连接寄
8、存器,接寄存器,接寄存器,接寄存器,r14r14pc and PCpc and PC程序寄存器,程序寄存器,程序寄存器,程序寄存器,r15r15cpsr and CPSRcpsr and CPSR当前程序状当前程序状当前程序状当前程序状态态态态寄存器寄存器寄存器寄存器spsr and SPSRspsr and SPSR保存的程序状保存的程序状保存的程序状保存的程序状态态态态寄存器寄存器寄存器寄存器f0-f7 and F0-F7f0-f7 and F0-F7浮点数运算加速寄存器浮点数运算加速寄存器浮点数运算加速寄存器浮点数运算加速寄存器s0-s31 and S0-S31s0-s31 and S0
9、-S31单单单单精度向量浮点数运算寄存器精度向量浮点数运算寄存器精度向量浮点数运算寄存器精度向量浮点数运算寄存器d0-d15 and D0-D15d0-d15 and D0-D15双精度向量浮点数运算寄存器双精度向量浮点数运算寄存器双精度向量浮点数运算寄存器双精度向量浮点数运算寄存器p0-p15p0-p15协处协处协处协处理器理器理器理器0-150-15c0-c15c0-c15协处协处协处协处理器寄存器理器寄存器理器寄存器理器寄存器0-150-156ARM汇编语言程序的部分内部变量汇编语言程序的部分内部变量名清单名清单 内部内部变变量量描述描述PC or.PC or.当前指令地址当前指令地址当
10、前指令地址当前指令地址VAR or VAR or 内存区定位内存区定位内存区定位内存区定位计计计计数器的当前数器的当前数器的当前数器的当前值值值值TRUETRUE逻辑值逻辑值逻辑值逻辑值真真真真FALSEFALSE逻辑值逻辑值逻辑值逻辑值假假假假CONFIGCONFIG汇编汇编汇编汇编器如果在器如果在器如果在器如果在汇编汇编汇编汇编ARMARM指令,取指令,取指令,取指令,取值为值为值为值为3232,如果,如果,如果,如果汇汇汇汇编编编编ThumbThumb指令,取指令,取指令,取指令,取值值值值1616ENDIANENDIAN如果如果如果如果汇编汇编汇编汇编器是大端序,器是大端序,器是大端序
11、,器是大端序,则则则则取取取取值值值值bigbig;如果是小端序,;如果是小端序,;如果是小端序,;如果是小端序,则则则则取取取取值值值值littlelittle。CPUCPU被被被被选择选择选择选择的的的的CPUCPU名称。缺省名称。缺省名称。缺省名称。缺省值值值值是是是是ARM7TDMIARM7TDMI。ARCHITECTARCHITECTUREURE该变该变该变该变量内容是被量内容是被量内容是被量内容是被选择选择选择选择的的的的ARMARM体系体系体系体系结结结结构的名称。如:构的名称。如:构的名称。如:构的名称。如:3,3M,4T3,3M,4TCODESIZECODESIZECONFI
12、GCONFIG的同的同的同的同义词义词义词义词7ARM汇编语言程序的语句格式汇编语言程序的语句格式n nARM汇编语言程序的语句格式格式如下:汇编语言程序的语句格式格式如下:symbol instruction|directive|pseudo-symbol instruction|directive|pseudo-instruction ;comment instruction ;comment n n对应的中文语句格式描述是:对应的中文语句格式描述是:符号符号符号符号(标号标号标号标号)指令指令指令指令|指示符指示符指示符指示符|伪指令伪指令伪指令伪指令 ;注注注注释释释释 n n语句格式
13、中,花括号括起来的部分表示可语句格式中,花括号括起来的部分表示可以省略;竖线分隔的字段表示可以替换。以省略;竖线分隔的字段表示可以替换。8ARM汇编语言程序中的符号汇编语言程序中的符号n nARM汇编语句中的符号可以是指令地址或汇编语句中的符号可以是指令地址或标号、变量、常量和局部标号,符号属性标号、变量、常量和局部标号,符号属性可以是程序相关的、寄存器相关的或者是可以是程序相关的、寄存器相关的或者是绝对地址。绝对地址。9(一)符号命名和书写规则(一)符号命名和书写规则n n符号的命名和书写有以下规则:符号的命名和书写有以下规则:符号命名可以使用大小写字母,数字和下划线。符号命名可以使用大小写
14、字母,数字和下划线。符号命名可以使用大小写字母,数字和下划线。符号命名可以使用大小写字母,数字和下划线。符号是大小写字母敏感的。符号是大小写字母敏感的。符号是大小写字母敏感的。符号是大小写字母敏感的。除本地行号外,名称不能以数字开头。除本地行号外,名称不能以数字开头。除本地行号外,名称不能以数字开头。除本地行号外,名称不能以数字开头。一个程序段中不能重名。一个程序段中不能重名。一个程序段中不能重名。一个程序段中不能重名。符号在其作用范围内必须唯一。符号在其作用范围内必须唯一。符号在其作用范围内必须唯一。符号在其作用范围内必须唯一。符号不能够与系统内部变量或者系统预定义的符号不能够与系统内部变量
15、或者系统预定义的符号不能够与系统内部变量或者系统预定义的符号不能够与系统内部变量或者系统预定义的符号同名。例如:符号同名。例如:符号同名。例如:符号同名。例如:a1 or R0a1 or R0、spsp、cpsrcpsr、PC or PC or.、VAR or VAR or、CONFIGCONFIG、CPUCPU等等。等等。等等。等等。10符号命名和书写规则(续)符号命名和书写规则(续)当程序中的符号与指令助记符或者指示符同名当程序中的符号与指令助记符或者指示符同名当程序中的符号与指令助记符或者指示符同名当程序中的符号与指令助记符或者指示符同名时,用双竖线将符号括起来。如时,用双竖线将符号括起
16、来。如时,用双竖线将符号括起来。如时,用双竖线将符号括起来。如|buffe_a|buffe_a|,这时双竖线并不是符号的组成部分。这时双竖线并不是符号的组成部分。这时双竖线并不是符号的组成部分。这时双竖线并不是符号的组成部分。在在在在ARMARM汇编语言程序中,所有符号必须在一行汇编语言程序中,所有符号必须在一行汇编语言程序中,所有符号必须在一行汇编语言程序中,所有符号必须在一行的最左边位置开始书写,即所谓的顶格书写,的最左边位置开始书写,即所谓的顶格书写,的最左边位置开始书写,即所谓的顶格书写,的最左边位置开始书写,即所谓的顶格书写,不允许包含空格或者制表符。不允许包含空格或者制表符。不允许
17、包含空格或者制表符。不允许包含空格或者制表符。符号的字符序列中不能大小写字母相混杂。符号的字符序列中不能大小写字母相混杂。符号的字符序列中不能大小写字母相混杂。符号的字符序列中不能大小写字母相混杂。11(二)常量(二)常量n nARM汇编语言中使用到的常量可以是数字汇编语言中使用到的常量可以是数字常量、字符常量、字符串常量和布尔常量。常量、字符常量、字符串常量和布尔常量。n n数字常量有以下数字常量有以下3种表示方式:种表示方式:1 1)十进制数,如:)十进制数,如:)十进制数,如:)十进制数,如:535535,246246。2 2)十六进制数,如:)十六进制数,如:)十六进制数,如:)十六进
18、制数,如:0 x6450 x645,0 xff000 xff00。3 3)n n进制数,格式为进制数,格式为进制数,格式为进制数,格式为n_XXXn_XXX,其中,其中,其中,其中n n表示表示表示表示n n进制,进制,进制,进制,从从从从2 29 9,XXXXXX是具体的数字。是具体的数字。是具体的数字。是具体的数字。例如:例如:例如:例如:8_37778_3777,8_52377028_5237702数字常量数字常量12字符常量字符常量n n字符常量由一对单引号括起来,包括一个单字符字符常量由一对单引号括起来,包括一个单字符字符常量由一对单引号括起来,包括一个单字符字符常量由一对单引号括起
19、来,包括一个单字符或者标准或者标准或者标准或者标准C C中的转义字符。中的转义字符。中的转义字符。中的转义字符。n n例如:例如:例如:例如:AA,nn。n n字符串常量由一对双引号以及由它括住的一组字字符串常量由一对双引号以及由它括住的一组字字符串常量由一对双引号以及由它括住的一组字字符串常量由一对双引号以及由它括住的一组字符串组成,包括标准符串组成,包括标准符串组成,包括标准符串组成,包括标准C C中的转义字符。如果需要中的转义字符。如果需要中的转义字符。如果需要中的转义字符。如果需要使用双引号或字符使用双引号或字符使用双引号或字符使用双引号或字符$,则必须用,则必须用,则必须用,则必须用
20、”和和和和$代替。代替。代替。代替。n n例如执行语句:例如执行语句:例如执行语句:例如执行语句:strtwo SETS“This is character of strtwo SETS“This is character of”其编译结果是:字符串其编译结果是:字符串其编译结果是:字符串其编译结果是:字符串“This is character of”“This is character of”被被被被赋值给赋值给赋值给赋值给strtwostrtwo变量。变量。变量。变量。13$在汇编语句中的使用举例在汇编语句中的使用举例 GBLS add4ff GBLS add4ffadd4ff add4f
21、f SETS“ADD r4,r4,#0 xFF“SETS“ADD r4,r4,#0 xFF“;set up add4ff;set up add4ff$add4ff.00$add4ff.00;invoke add4ff;invoke add4ff;this produces;this produces ;ADD r4,r4,#0 xFF00;ADD r4,r4,#0 xFF00 ;elaborate substitution;elaborate substitution GBLS s1 GBLS s1 GBLS s2 GBLS s2 GBLS fixup GBLS fixup GBLA coun
22、t GBLA countcount count SETA 14 SETA 14s1 s1 SETS a$b$count SETS a$b$count;s1 now has value a$b0000000E;s1 now has value a$b0000000Es2 s2 SETS abc SETS abcFixupFixup SETS|xy$s2.z|SETS|xy$s2.z|;fixup now has value|xyabcz|;fixup now has value|xyabcz|C$code|MOV r4,#16|C$code|MOV r4,#16;but the label he
23、re is C$code;but the label here is C$code14逻辑值常量逻辑值常量n n布尔常量布尔常量TRUE和和FALSE在表达式中写为:在表达式中写为:TRUE,FALSE。15(三)表达式(三)表达式n nARM汇编语言中的表达式由符号、数值、汇编语言中的表达式由符号、数值、单目操作符、双目操作符以及括号组成。单目操作符、双目操作符以及括号组成。运算的优先级次序与标准运算的优先级次序与标准C一样。一样。16字符串表达式字符串表达式n n字符串由字符串常量、字符串变量、操作字符串由字符串常量、字符串变量、操作符以及括号组成。最大长度为符以及括号组成。最大长度为51
24、2字节,最字节,最短短0个字节。字符串表达式的组成元素有:个字节。字符串表达式的组成元素有:字符串常量、字符串变量、操作符等。字字符串常量、字符串变量、操作符等。字符串常量由包含在双引号内的一系列字符符串常量由包含在双引号内的一系列字符组成。当在字符串中包含美元符号组成。当在字符串中包含美元符号$或者引或者引号号”时,用时,用$表示一个表示一个$,用,用”表示一个表示一个”。字符串变量用指示符。字符串变量用指示符GBLS(全局字符(全局字符串)或者串)或者LCLS(局部字符串)声明,用(局部字符串)声明,用SETS赋值。取值范围与字符表达式相同。赋值。取值范围与字符表达式相同。17ARM汇编语
25、言中的字符串操作符汇编语言中的字符串操作符 操作符操作符功能功能操作符操作符功能功能LENLEN返回字符串的返回字符串的返回字符串的返回字符串的长长长长度度度度CHRCHR将将将将02550255之之之之间间间间整数整数整数整数变为单变为单变为单变为单个字符个字符个字符个字符STRSTR将一个数字量将一个数字量将一个数字量将一个数字量变换为变换为变换为变换为串串串串LEFTLEFT返回字符串的左子返回字符串的左子返回字符串的左子返回字符串的左子串串串串RIGHTRIGHT返回字符串的返回字符串的返回字符串的返回字符串的右子串右子串右子串右子串CCCC连连连连接两个字符串接两个字符串接两个字符串
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ARM 汇编语言 程序设计 习题
限制150内