欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    arm汇编伪指令.ppt

    • 资源ID:33409669       资源大小:219.50KB        全文页数:22页
    • 资源格式: PPT        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    arm汇编伪指令.ppt

    第五章基于ARM的嵌入式程序设计 5.1 ARM汇编语言的伪操作、宏指令与伪指令 5.2 ARM汇编语言程序设计 5.3 嵌入式C语言程序设计基础 5.4 嵌入式C语言程序设计实例 5.5 嵌入式C语言程序设计技巧 5.6 C与汇编语言混合编程5.1 ARM汇编语言的伪操作、汇编语言的伪操作、宏指令与伪指令宏指令与伪指令 5.1.1 两种常见的ARM编译开发环境 5.1.2 ADS编译环境下的伪操作和宏指令 5.1.3 GNU编译环境下的伪操作和宏指令 5.1.4 ARM汇编语言的伪指令 5.1.1两种常见的ARM编译开发环境 ADS/SDT IDE开发环境:它由ARM公司开发,使用了CodeWarrior公司的编译器; 集成了GNU开发工具的IDE开发环境:它由GNU的汇编器as、交叉编译器gcc、和链接器ld等组成。 5.1.2ADS编译环境下的伪操作和宏指令 ADS编译环境下的伪操作可分为以下几类:符号定义(Symbol Definition)伪操作 数据定义(Data Definition)伪操作 汇编控制(Assembly Control)伪操作 信息报告(Reporting)伪操作 其他(Miscellaneous)伪操作 符号定义伪操作 伪操作伪操作语法格式语法格式作作 用用GBLAGBLA Variable声明一个全局的算术变量,并将其初始化成声明一个全局的算术变量,并将其初始化成0。GBLLGBLL Variable声明一个全局的逻辑变量,并将其初始化成声明一个全局的逻辑变量,并将其初始化成FALSE。GBLSGBLS Variable声明一个全局的字符串变量,并将其初始化成空串声明一个全局的字符串变量,并将其初始化成空串“”“”。LCLALCLA Variable声明一个局部的算术变量,并将其初始化成声明一个局部的算术变量,并将其初始化成0。LCLLLCLL Variable声明一个局部的逻辑变量,并将其初始化成声明一个局部的逻辑变量,并将其初始化成FALSE。LCLSLCLS Variable声明一个局部的串变量,并将其初始化成空串声明一个局部的串变量,并将其初始化成空串“”“”。SETASETA Variable expr给一个全局或局部算术变量赋值。给一个全局或局部算术变量赋值。SETLSETL Variable expr给一个全局或局部逻辑变量赋值。给一个全局或局部逻辑变量赋值。SETSSETS Variable expr给一个全局或局部字符串变量赋值。给一个全局或局部字符串变量赋值。RLISTn a m e L I S T l i s t o f registers为一个通用寄存器列表定义名称。为一个通用寄存器列表定义名称。CNname CN expr为一个协处理器的寄存器定义名称。为一个协处理器的寄存器定义名称。CPname CP expr为一个协处理器定义名称。为一个协处理器定义名称。DN/SNname DN/SN exprDN/SN为一个双精度为一个双精度/单精度的单精度的VFP寄存器定义名称。寄存器定义名称。FNname FN expr为一个为一个FPA浮点寄存器定义名称。浮点寄存器定义名称。数据定义伪操作 伪操作伪操作语法格式语法格式作作 用用LTORGLTORG声明一个数据缓冲池(也称为文字池)的开始。声明一个数据缓冲池(也称为文字池)的开始。MAPMAP expr,base-register定义一个结构化的内存表(定义一个结构化的内存表(Storage Map)的首地址。)的首地址。FIELDlabel FIELD expr定义一个结构化内存表中的数据域。定义一个结构化内存表中的数据域。SPACElabel SPACE expr分配一块连续内存单元,并用分配一块连续内存单元,并用0初始化。初始化。DCBlabel DCB expr,expr分配一段字节内存单元,并用分配一段字节内存单元,并用expr初始化。初始化。D C D / DCDUlabel DCD expr ,expr分配一段字内存单元。分配一段字内存单元。DCDOlabel DCDO expr,expr分配一段字对齐的字内存单元。分配一段字对齐的字内存单元。D C F D / DCFDUlabel DCFD Ufpliteral,fpliteral为双精度的浮点数分配字对齐的内存单元。为双精度的浮点数分配字对齐的内存单元。 D C F S / DCFSUlabel DCFS U fpliteral ,fpliteral为单精度的浮点数分配字对齐的内存单元。为单精度的浮点数分配字对齐的内存单元。DCIlabel DCI expr,expr在在ARM代码中分配一段字对齐的内存单元代码中分配一段字对齐的内存单元; 在在Thumb代代码中,分配一段半字对齐的半字内存单元。码中,分配一段半字对齐的半字内存单元。D C Q / DCQUlabel DCQUl i t e r a l , , literal分配一段以双字(分配一段以双字(8个字节)为单位的内存个字节)为单位的内存D C W / DCWUlabel DCWUexpr,exprDCW用于分配一段半字对齐的半字内存单元。用于分配一段半字对齐的半字内存单元。汇编控制伪操作 伪操作伪操作语法格式语法格式作作 用用IF,ELSE及及ENDIFIF logical expressionELSEENDIF能够根据条件把一段源代码包能够根据条件把一段源代码包括在汇编语言程序内或者将其括在汇编语言程序内或者将其排除在程序之外。排除在程序之外。WHILE及及WENDWHILE logical expressionWEND能够根据条件重复汇编相同的能够根据条件重复汇编相同的一段源代码。一段源代码。MACRO 、M E N D 及及MEXITMACRO$label macroname $parameter,$parameter;宏代码;宏代码MENDMACRO标识宏定义的开始,标识宏定义的开始,MEND标识宏定义的结束。标识宏定义的结束。MERIT用于从用于从宏中跳转出去。用宏中跳转出去。用MACRO和和MEND定义的一段代码,称为宏定义体。定义的一段代码,称为宏定义体。通过宏名称来调用宏。通过宏名称来调用宏。信息报告伪操作 伪操作伪操作语法格式语法格式作作 用用ASSERTA S S E R T l o g i c a l expression对汇编程序的第二遍扫描中,如果其中对汇编程序的第二遍扫描中,如果其中ASSERT中条件不成立,中条件不成立,ASSERT伪操作将报告该错误信伪操作将报告该错误信息。息。INFOI N F O n u m e r i c -expression,string-expression在汇编处理过程的第一遍扫描或者第二遍扫描时在汇编处理过程的第一遍扫描或者第二遍扫描时INFO伪操作报告诊断信息。伪操作报告诊断信息。OPTOPT n通过通过OPT伪操作可以在源程序中设置列表选项。伪操作可以在源程序中设置列表选项。TTL TTL title在列表文件的每一页的开头插入一个标题。在列表文件的每一页的开头插入一个标题。SUBTSUBT subtitle在列表文件的每一页的开头插入一个子标题。在列表文件的每一页的开头插入一个子标题。伪操作伪操作语法格式语法格式作作 用用CODE16CODE16告诉汇编编译器后面的指令序列为告诉汇编编译器后面的指令序列为16位的位的Thumb指令指令CODE32CODE32告诉汇编编译器后面的指令序列为告诉汇编编译器后面的指令序列为32位的位的ARM指令。指令。EQUname EQU expr,type为数字常量、基于寄存器的值和程序中的标号(基于为数字常量、基于寄存器的值和程序中的标号(基于PC的值)定义一个字符名称的值)定义一个字符名称,类似于类似于C语言中的语言中的define宏定义。宏定义。AREAAREA sectionname,attr,attr定义一个代码段或者数据段。定义一个代码段或者数据段。ENTRYENTRY指定程序的入口点。指定程序的入口点。ENDEND告诉编译器已经到了源程序结尾。告诉编译器已经到了源程序结尾。ALIGNALIGN expr,offset通过添加补丁字节使当前位置满足一定的对齐方式。通过添加补丁字节使当前位置满足一定的对齐方式。E X P O R T / GLOBALEXPORT symbol WEAK声明一个符号可以被其他文件引用声明一个符号可以被其他文件引用.IMPORTIMPORT symbol WEAK告诉编译器当前的符号不是在本源文件中定义的,而是在其他源文告诉编译器当前的符号不是在本源文件中定义的,而是在其他源文件中定义的,在本源文件中可能引用该符号。件中定义的,在本源文件中可能引用该符号。EXTERNEXTERN symbol WEAK告诉编译器当前的符号不是在本源文件中定义的,而是在告诉编译器当前的符号不是在本源文件中定义的,而是在其他源文件中定义的,在本源文件中可能引用该符号。其他源文件中定义的,在本源文件中可能引用该符号。GET/ INCLUDEGET filename 将一个源文件包含到当前源文件中,并将被包含的文件在其当前位置进行汇编处将一个源文件包含到当前源文件中,并将被包含的文件在其当前位置进行汇编处理。理。INCBININCBIN filename将一个文件包含到当前源文件中,被包含的文件不进行汇编处理。将一个文件包含到当前源文件中,被包含的文件不进行汇编处理。KEEPKEEPsymbol告诉编译器将局部符号包含在目标文件的符号表中。告诉编译器将局部符号包含在目标文件的符号表中。NOFPNOFP禁止源程序中包含浮点运算指令。禁止源程序中包含浮点运算指令。REQUIREREQUIRE lable指定段之间的相互依赖关系。指定段之间的相互依赖关系。RNname RN expr为一个特定的寄存器定义名称。为一个特定的寄存器定义名称。ROUTname ROUT定义局部变量的有效范围。定义局部变量的有效范围。5.1.3 GNU编译环境下的伪操作和宏指令 GNU编译环境下的伪操作可分为以下几类: 常量编译控制伪操作 汇编程序代码控制伪操作 宏及条件编译控制伪操作其他伪操作常量编译控制伪操作 :伪操作语法格式作 用.byte.byte expr ,expr 分配一段字节内存单元,并用expr初始化。.hword/.short.hword expr ,expr 分配一段半字内存单元,并用expr初始化。.ascii.ascii expr ,expr 定义字符串expr(非零结束符)。.asciz /.string.asciz expr ,expr 定义字符串expr(以/0为结束符)。.float/.single.float expr ,expr 定义一个32bit IEEE 浮点数expr。.double.double expr ,expr 定义64bit IEEE浮点数expr。word/.long /.int.word expr ,expr 分配一段字内存单元,并用expr初始化。.fill.fill repeat ,size,value分配一段字节内存单元,用size长度value填充repeat次。.zero.zero size分配一段字节内存单元,并用0填充内存。.space/.skip.space size , value分配一段内存单元,用value将内存单元初始化。汇编程序代码控制伪操作 伪操作语法格式作 用.section.section expr定义域中包含的段。.text.text subsection将操作符开始的代码编译到代码段或代码段子段。.data.data subsection将操作符开始的数据编译到数据段或数据段子段。.bss.bss subsection将变量存放到.bss段或.bss段的子段。.code 16/.thumb.code 16.thumb表明当前汇编指令的指令集选择Thumb指令集。.code 32/.arm.code 32.arm表明当前汇编指令的指令集选择ARM指令集。.end.end标记汇编文件的结束行,即标号后的代码不作处理。.include.include “filename”将一个源文件包含到当前源文件中。.align/.balign.align alignment ,fill ,max通过添加填充字节使当前位置满足一定的对齐方式。宏及条件编译控制伪操作 伪操作语法格式作 用.macro、.e x i t m及.endm.macro acronameparameter, parameter.endm. m a c r o 伪 操 作 标 识 宏 定 义 的 开始,.endm标识宏定义的结束。用.macro及.endm定义一段代码,称为宏定义体。.exitm伪操作用于提前退出宏。. ifdef,.else及.endif.ifdef condition.else.endif当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句。其中else可以缺省。其他伪操作 伪操作语法格式作 用.eject.eject在汇编符号列表文件中插入一分页符。.list.list产生汇编列表(从 .list 到 .nolist)。.nolist.nolist表示汇编列表结束处。.title.title “heading”使用“heading ”作为标题。.sbttl.sbttl “heading”使用“heading”作为子标题。.ltorg.ltorg在当前段的当前地址(字对齐)产生一个文字池。.req.req name,expr为一个特定的寄存器定义名称。.err.err使编译时产生错误报告。.print.print string打印信息到标准输出。.fail.fail expr编译汇编文件时产生警告。5.1.4ARM汇编语言的伪指令 伪指令语法格式作 用ADRA D R c o n d register , expr将基于PC或基于寄存器的地址值读取到寄存器中。小范围的地址读取。ADRLADRL c ond register,expr将基于PC或基于寄存器的地址值读取到寄存器中。中等范围的地址读取。LDRL D R c o n d register,=expr | label-expr将一个32位的立即数或者一个地址值读取到寄存器中。大范围的地址读取。NOPNOP在汇编时将被替换成ARM中的空操作。5.2 ARM汇编语言程序设计汇编语言程序设计 5.2.1 ARM汇编中的文件格式 5.2.2 ARM汇编语言语句格式 5.2.3 ARM汇编语言编程的重点 5.2.4 ARM汇编程序实例5.2.1ARM汇编中的文件格式 ARM源程序文件(可简称为源文件)可以由任意一种文本编辑器来编写程序代码,它一般为文本格式。在ARM程序设计中,常用的源文件可简单分为以下几种:源程序文件文件名说 明汇编程序文件*.S用ARM汇编语言编写的ARM程序或Thumb程序。C程序文件*.C用C语言编写的程序代码。头文件*.H为了简化源程序,把程序中常用到的常量命名、宏定义、数据结构定义等等单独放在一个文件中,一般称为头文件。5.2.2 ARM汇编语言语句格式 ARM汇编语言语句格式如下所示:symbol instruction | directive | pseudo-instruction ;comment 其中:instruction为指令。 directive为伪操作。 pseudo-instruction为伪指令。 symbol为符号。 comment为语句的注释。 ARM汇编语言程序格式 ARM汇编语言是以段(section)为单位来组织源文件的。段是相对独立的、具有特定名称的、不可分割的指令或者数据序列。段又可以分为代码段和数据段,代码段存放执行代码,数据段存放代码运行时需要用到的数据。一个ARM源程序至少需要一个代码段,大的程序可以包含多个代码段和数据段。 举例说明ARM汇编语言源程序的基本结构 AREA EXAMPLE,CODE,READONLYENTRYstartMOV r0,#10MOV r1,#3ADD r0,r0,r1END本程序的程序体部分实现了一个简单的加法运算。

    注意事项

    本文(arm汇编伪指令.ppt)为本站会员(豆****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开