版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、ARM 嵌入式系统第5章 ARM汇编程序设计5.1汇编语言言源程序序助记符伪指令宏指令汇编指令令和机器器指令是是“一一一对应”的汇编语言言程序需需由汇编编程序将将其汇编编为机器器语言程程序,才能被被计算机机执行。汇编语言言大体上上包括了了汇编指指令、系系统调用用和中断断、伪指指令和宏宏指令,汇编语语言是强强烈依赖赖硬件和和汇编环环境的。学习和使使用汇编编语言程程序设计计的原因因指令语句句(instructions)完成一定定操作功功能,能能够翻译译成机器器代码的的语句。伪指令语语句(directives,指示性语语句)为汇编程程序在翻翻译汇编编语言源源程序时时提供有有关信息息,并不不翻译成成机
2、器代代码。宏指令语语句(marcos)可看成是是由若干干条指令令语句形形成的语语句,一一条宏指指令语句句的功能能相当于于若干条条指令语语句的功功能。ARM程序设计计基础伪指令宏与宏指指令ARM汇编语言言规范(语句、表达式式和运算算符)ARM汇编语言言的程序序格式5.2伪指令段定义标号符号定义义伪指令令数据定义义伪指令令汇编控制制伪指令令其他伪操操作汇编语言言程序示示例AREABlock,CODE,READONLYnumEQU10ENTRYstartLDRR0,=srcLDRR1,=dstMOVR2,#numblockcopyLDRR3,R0,#4STRR3,R1,#4SUBSR2,R2,#1B
3、NEblockcopyB.AREABlockData,DATA,READWRITEsrcDCD0,1,2,3,4,5,6,7,8,9dstSPACE10*4END符号定义义伪指令令定义全局局变量:GBLA、GBLL和GBLS定义局部部变量:LCLA、LCLL和LCLS变量赋值值:SETA、SETL、SETS通用寄存存器列表表定义名名称:RLISTGBLA、GBLL和GBLSGBLA、GBLL和GBLS语法格式式:GBLA(GBLL或GBLS)全局局变量名名GBLAobjectsize;全局的的数字变变量objectsize,为0ObjectsizeSETA0 xff;将该变变量赋值值为0 xf
4、fSPACEobjectsize;引用该该变量GBLLstatusB;全局的的逻辑变变量statusB,为FalsestatusBSETLTRUE;将该变变量赋值值为真全局:作作用范围围为包含含该变量量的源程程序LCLA、LCLL和LCLSLCLA、LCLL和LCLS语法格式式:LCLA(LCLL或LCLS)局部部变量名名MACRO;声明一一个宏$labelmessage$a;宏的原原型LCLSerr;声明一一个局部部变量err,为空串串errSETS“errorno: ”;向该变变量赋值值$label;代码INFO0,err:CC:STR:$a;使用该该串变量量MEND;宏定义义结束局部:作
5、作用范围围为包含含该局部部变量的的宏代码码的一个个实例SETA、SETL、SETSSETA、SETL和SETS语法格式式:变量名SETA(SETL或SETS)表达达式在向变量量赋值前前,必须须先声明明该变量量 RLISTRLIST语法格式式:名称RLIST寄存器列列表ContextRLISTr0-r6,r8,r10-r12,r15;将寄存存器列表表名称定定义为Context,可在ARM指令LDM/STM中通过该该名称访访问寄存存器列表表。排列列顺序无无关数据定义义伪指令令DCBDCW(DCWU)DCD(DCDU)DCFD(DCFDU)DCFS(DCFSU)SPACEMAPFIELDDCB语法格
6、式式:标号DCB表达式表达式取取值范围围:128127;0255的数字或或字符串串。DCB:“=”NullstringDCB“Nullstring”,0;构造一一个以0结尾的字字符串DCW(或DCWU)语法格式式:标号DCW(或DCWU)表达达式DCW:半字对对齐DCWU:不严格格半字对对齐。表达式取取值范围围:3276832767;065535data1DCW128,num1+8;num1必须是已已经定义义过的DCD(或DCDU)语法格式式:标号DCD(或DCDU)表达达式DCD:“&”DCD:字对齐齐DCDU:不严格格字对齐齐。data1DCD1,5,20;其值为1,5,20data2DC
7、Dmemaddr+4;分配一一个字单单元,其其值为程程序中标标号memaddr加4个字节DCFD(或DCFDU)语法格式式:标号DCFD(或DCFDU)表达达式每个双精精度的浮浮点数占占据两个个字单元元。DCFD:字对齐齐DCFDU:不严格格字对齐齐DCFD1E308,-4E100DCFDU100000,.1,3.1E26DCFS(或DCFSU)语法格式式:标号DCFS(或DCFSU) 表达达式每个单精精度的浮浮点数占占据一个个字单元元。DCFS:字对齐齐DCFSU:不严格格字对齐齐DCFS1E3,-4E-9DCFSU1.0,-.1,3.1E6SPACE语法格式式:标号SPACE表达式分配一片
8、片连续的的存储区区域并初初始化为为0。其中,表达式式为要分分配的字字节数。SPACE:“”DatastrucSPACE280;分配连连续280字节的存存储单元元并初始始化为0LTORG语法格式式:标号LTORG说明某个个存储区区域是用用来暂存存数据的的数据缓缓冲区文字池或或数据缓缓冲池。大的代代码段也也可以使使用多个个数据缓缓冲池。当程序中中使用LDR之类的指指令访问问数据缓缓冲池时时,为防防止越界界产生,通常把把数据缓缓冲池放放在代码码段的后后面,或或者放在在无条件件跳转指指令或子子程序返返回指令令之后,使得处处理器不不会错误误的将数数据缓冲冲池中的的数据当当做指令令来执行行。AREA Ex
9、ample, CODE, READONLYStartBLFunc1Func1LDRR1,=0 x800MOVPC,LRLRORGDataSPACE40ENDMAP语法格式式:MAP表达式,基址寄寄存器用于定义义一个结结构化的的内存表表的首地地址。MAP:“”通常与FIELD伪指令配配合使用用来定义义结构化化的内存存表。MAPfun;定义结结构化内内存表,fun就是内存存表的首首地址MAP0 x80,R9;定义结结构化内内存表首首地址的的值为0 x80R9FILED语法格式式:标号FIELD表达式定义一个个结构化化内存表表中的数数据域。FILED也可用“#”代替。MAP0;定义结结构化内内存表首
10、首地址为为0constaFIELD4;consta的长度为为4字节,相相对位置置为0 x0constbFIELD4;constb的长度为为4字节,相相对位置置为0 x4xFIELD8;x的长度为为8字节,相相对位置置为0 x8yFIELD8;y的长度为为8字节,相相对位置置为0 x10stringFIELD256;y的长度为为256字节,相相对位置置为0 x18MOVR9,#4096LDRR5,R9,constb;将内存表表中数据据域constb读取到R5中汇编控制制伪指令令汇编控制制(AssemblyControl)伪指令令用于控控制汇编编程序的的执行流流程,常常用的汇汇编控制制伪操作作包括
11、以以下几条条:IF、ELSE、ENDIFWHILE、WENDIF、ELSE、ENDIF语法格式式:IF逻辑表达达式指令序列列1ELSE指令序列列2ENDIF示例:IFVersion=“1.0”;指令;伪指令令ELSE;指令;伪指令令ENDIFWHILE、WEND语法格式式:WHILE逻辑表达达式指令序列列WEND示例:countSETA1WHILEcountBA=BA=BX/=BAB逻辑表达达式逻辑操作作符:LNOT:AA:LAND:BA:LOR:BA:LEOR:B字符串表表达式字符串双引号“ ”;$-$;“-“示例:abcSETS “this stringcontainsonly “ dou
12、blequote”defSETS “this stringcontainsonly $ doublequote”字符串表表达式操作符LEN:LEN:ACHR:CHR:ASTR:STR:ALEFTA :LEFT:BRIGHTA :RIGHT:BCCA :CC:B字符串表表达式示例GBLSSTRING1GBLSSTRING2STRING1SETS “AAACCC”STRING2SETS “BB”:CC:(STRING1:LEFT:3);STRING2:“BBAAA”其他常用用操作符符?操作符符?操作符返返回某代代码行所所生成的的可执行行代码的的长度,例如:?X返回定义义符号X的代码行行所生成成的可执执行代码码的字节节数。DEF操作符DEF操作符判判断是否否定义某某个符号号,例如如:DEF:X如果符号号X已经定义义,则结结果为真真,否则则为假。其他常用用操作符符?操作符符?操作符返返回某代代码行所所生成的的可执行行代码的的长度,例如:?X返回定义义符号X的代码行行所生成成的可执执行代码码的字节节数。DEF操作符DEF操作符判判断是否否定义某某个符号号,例如如:DEF:X如果符号号X已经定义义,则结结果为真真,否则则为假。程序中的的变量代代换$操作符 数字变量量:编译译器将
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论