




免费预览已结束,剩余60页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ARM嵌入式系统ARM汇编程序设计,1汇编语言源程序,助记符伪指令宏指令,汇编指令和机器指令是“一一对应”的汇编语言程序需由汇编程序将其汇编为机器语言程序,才能被计算机执行。汇编语言大体上包括了汇编指令、系统调用和中断、伪指令和宏指令,汇编语言是强烈依赖硬件和汇编环境的。学习和使用汇编语言程序设计的原因,指令语句(instructions)完成一定操作功能,能够翻译成机器代码的语句。伪指令语句(directives,指示性语句)为汇编程序在翻译汇编语言源程序时提供有关信息,并不翻译成机器代码。宏指令语句(marcos)可看成是由若干条指令语句形成的语句,一条宏指令语句的功能相当于若干条指令语句的功能。,ARM程序设计基础,伪指令宏与宏指令ARM汇编语言规范(语句、表达式和运算符)ARM汇编语言的程序格式,2伪指令,段定义标号符号定义伪指令数据定义伪指令汇编控制伪指令其他伪操作,汇编语言程序示例,AREABlock,CODE,READONLYnumEQU10ENTRYstartLDRR0,=srcLDRR1,=dstMOVR2,#numblockcopyLDRR3,R0,#4STRR3,R1,#4SUBSR2,R2,#1BNEblockcopyB.AREABlockData,DATA,READWRITEsrcDCD0,1,2,3,4,5,6,7,8,9dstSPACE10*4END,符号定义伪指令,定义全局变量:GBLA、GBLL和GBLS定义局部变量:LCLA、LCLL和LCLS变量赋值:SETA、SETL、SETS通用寄存器列表定义名称:RLIST,GBLA、GBLL和GBLS,GBLA、GBLL和GBLS语法格式:GBLA(GBLL或GBLS)全局变量名GBLAobjectsize;全局的数字变量objectsize,为0ObjectsizeSETA0 xff;将该变量赋值为0 xffSPACEobjectsize;引用该变量GBLLstatusB;全局的逻辑变量statusB,为FalsestatusBSETLTRUE;将该变量赋值为真全局:作用范围为包含该变量的源程序,LCLA、LCLL和LCLS,LCLA、LCLL和LCLS语法格式:LCLA(LCLL或LCLS)局部变量名MACRO;声明一个宏$labelmessage$a;宏的原型LCLSerr;声明一个局部变量err,为空串errSETS“errorno:”;向该变量赋值$label;代码INFO0,err:CC:STR:$a;使用该串变量MEND;宏定义结束局部:作用范围为包含该局部变量的宏代码的一个实例,SETA、SETL、SETS,SETA、SETL和SETS语法格式:变量名SETA(SETL或SETS)表达式在向变量赋值前,必须先声明该变量,RLIST,RLIST语法格式:名称RLIST寄存器列表ContextRLISTr0-r6,r8,r10-r12,r15;将寄存器列表名称定义为Context,可在ARM指令LDM/STM中通过该名称访问寄存器列表。排列顺序无关,数据定义伪指令,DCBDCW(DCWU)DCD(DCDU)DCFD(DCFDU)DCFS(DCFSU)SPACEMAPFIELD,DCB,语法格式:标号DCB表达式表达式取值范围:128127;0255的数字或字符串。DCB:“=”NullstringDCB“Nullstring”,0;构造一个以0结尾的字符串,DCW(或DCWU),语法格式:标号DCW(或DCWU)表达式DCW:半字对齐DCWU:不严格半字对齐。表达式取值范围:3276832767;065535data1DCW128,num1+8;num1必须是已经定义过的,DCD(或DCDU),语法格式:标号DCD(或DCDU)表达式DCD:“其值为1,5,20data2DCDmemaddr+4;分配一个字单元,其值为程序中标号memaddr加4个字节,DCFD(或DCFDU),语法格式:标号DCFD(或DCFDU)表达式每个双精度的浮点数占据两个字单元。DCFD:字对齐DCFDU:不严格字对齐DCFD1E308,-4E100DCFDU100000,.1,3.1E26,DCFS(或DCFSU),语法格式:标号DCFS(或DCFSU)表达式每个单精度的浮点数占据一个字单元。DCFS:字对齐DCFSU:不严格字对齐DCFS1E3,-4E-9DCFSU1.0,-.1,3.1E6,SPACE,语法格式:标号SPACE表达式分配一片连续的存储区域并初始化为0。其中,表达式为要分配的字节数。SPACE:“”DatastrucSPACE280;分配连续280字节的存储单元并初始化为0,LTORG,语法格式:标号LTORG说明某个存储区域是用来暂存数据的数据缓冲区文字池或数据缓冲池。大的代码段也可以使用多个数据缓冲池。当程序中使用LDR之类的指令访问数据缓冲池时,为防止越界产生,通常把数据缓冲池放在代码段的后面,或者放在无条件跳转指令或子程序返回指令之后,使得处理器不会错误的将数据缓冲池中的数据当做指令来执行。AREAExample,CODE,READONLYStartBLFunc1Func1LDRR1,=0 x800MOVPC,LRLRORGDataSPACE40END,MAP,语法格式:MAP表达式,基址寄存器用于定义一个结构化的内存表的首地址。MAP:“”通常与FIELD伪指令配合使用来定义结构化的内存表。MAPfun;定义结构化内存表,fun就是内存表的首地址MAP0 x80,R9;定义结构化内存表首地址的值为0 x80R9,FILED,语法格式:标号FIELD表达式定义一个结构化内存表中的数据域。FILED也可用“#”代替。MAP0;定义结构化内存表首地址为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)伪指令用于控制汇编程序的执行流程,常用的汇编控制伪操作包括以下几条:IF、ELSE、ENDIFWHILE、WEND,IF、ELSE、ENDIF,语法格式:IF逻辑表达式指令序列1ELSE指令序列2ENDIF示例:IFVersion=“1.0”;指令;伪指令ELSE;指令;伪指令ENDIF,WHILE、WEND,语法格式:WHILE逻辑表达式指令序列WEND示例:countSETA1WHILEcountBA=BAB,逻辑表达式,逻辑操作符:LNOT:AA:LAND:BA:LOR:BA:LEOR:B,字符串表达式,字符串双引号“”;$-$;“-“示例:abcSETS“thisstringcontainsonly“doublequote”defSETS“thisstringcontainsonly$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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 青岛李沧区初三数学试卷
- 宁波鄞州七下数学试卷
- 宁乡市中考数学试卷
- 2024年闵行浦锦街道招聘公益性岗位辅助人员笔试真题
- 2025年西藏自治区公务员考试真题
- 轻工中学初三数学试卷
- 宁波历年中考数学试卷
- 内初考试数学试卷
- 蒲城县新高一数学试卷
- 全国高三数学试卷
- DB65∕T 4791-2024 水工隧洞敞开式TBM施工技术规范
- 工行金库资产管理办法
- DG-TJ08-2144-2025 公路养护工程质量检验评定标准
- 2025年现代物流与采购管理考试试题及答案
- 医疗集团薪酬管理办法
- 顶管培训课件
- 北京医院神经外科护理团队介绍
- 纸品供应及质量保证措施
- 2025年北京市中考物理试卷真题(含答案)
- 2025年安徽高考地理试卷真题(含答案)
- 现代畜牧专业教学标准(高等职业教育本科)2025修订
评论
0/150
提交评论