电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

ARM指令及汇编程序设计

30页
  • 卖家[上传人]:xian****812
  • 文档编号:219413916
  • 上传时间:2021-12-07
  • 文档格式:PPT
  • 文档大小:330.50KB
  • / 30 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、ARM 指令及汇编程序设计2Agenda寻址模式指令格式AAPCS规范寻址方式q立即寻址SUBSR0,R0,#1;R0-1-R0MOVR0,#0 xFF00;0 xFF00-R0q寄存器偏移寻址MOVR0,R2,LSL#3;R2的值左移3位,结果放入R0,即R0=R2*8q寄存器间接寻址LDRR1,R2;将R2中的数值作为地址,取出此地址中的数据保存在R1中q基址寻址ImmediateOffset、RegisterOffsetScaledRegisterOffsetLDRR2,R3,#0 x0F;将R3中的数值加0 x0F作为地址,取出此地址的数值保存在R2中q多寄存器寻址LDMIAR1!,R2-R7,R12;将R1单元中的数据读出到R2-R7,R12,R1自动加1q堆栈寻址STMFDSP!,R1-R7,LR;将R1-R7,LR入栈。满递减堆栈q块拷贝寻址STMIBR0!,R1-R7;将R1-R7的数据保存到存储器中,存储器指针在保存第一个值之前增加,增加方向为向上增长q相对寻址BLROUTE1;调用到ROUTE1子程序BEQLOOP;条件跳转到LOOP标号处.LOOPMOVR2,#2

      2、.ROUTE1.指令格式n基本格式数据处理类S,内存访问类:BT,内的项是必须的内的项是可选的opcode指令助记符,如LDR,STR等cond执行条件,如EQ,NE等S 是否影响CPSR寄存器的值Rd目标寄存器Rn第一个操作数的寄存器operand2第二个操作数n第二个操作数q#immed_8r常数表达式,必须是一个8位常数的偶数次循环移位合法常量:0 x3FC、0、0 xF0000000、200、0 xF0000001非法常量:0 x1FE、511、0 xFFFF、0 x1010、0 xF0000010ANDR1,R2,#0 x0F;R2与0 x0F,结果保存在R1LDRR0,R1,#-4;读取R1地址上的存储器单元内容,且R1=R1-4qRm寄存器方式,操作数位寄存器的数值SUBR1,R1,R2 ;R1-R2-R1MOVPC,R0;PC=R0,程序跳转到制定地址LDRR0,R1,-R2;读取R1地址上的存储器单元内容并存入R0,且R1=R1-R2qRm,shift寄存器移位方式,将寄存器的移位结果作为操作数,但Rm值保持不变形式1:type#n其中type为ASR(算术右移)、L

      3、SL(逻辑左移)、ROR(循环右移)、RRX(带扩展的循环右移1位)中的一种ADDR1,R1,R1,LSL#3;R1=R1*8形式2:typeRs其中typeASR(算术右移)、LSL(逻辑左移)、ROR(循环右移)中的一种;Rs是偏移量寄存器,低8位有效,若其值大于或等于32则第二个操作数的结果为0(ASR,ROR例外)ARM汇编程序设计n文件格式汇编文件*.s引入文件*.INCC程序*.C头文件*.Hn汇编语句格式标号;注释标号顶格写,指令不可顶格书写标号后没有:程序中可以有空行分行用(用于比较长的语句)n常量q数字常量十进制12,5,876,0十六进制0 xFF,0 x1N进制n-XXX,2-010111q字符常量q布尔常量n段定义AREAHello,CODE,READONLYENTRYSTART MOVR7,#10MOVR6,#5ADDR6,R6,R7BENDARM汇编伪指令 n在ARM汇编语言程序里,有一些特殊指令助记符,这些助记符与指令系统的助记符不同,没有相对应的操作码,也就是不会生成机器码,仅仅是在编译器软件中起着格式化的作用,通常称这些特殊指令助记符为伪指令。伪指令在

      4、源程序中的作用是为完成汇编程序作各种准备工作的,这些伪指令仅在汇编过程中起作用,一旦汇编结束,伪指令的使命就完成。在ARM的汇编程序中,有如下几种伪指令:数据常量定义伪指令、数据变量定义伪指令、内存分配伪指令及其他伪指令。数据常量定义伪指令 n数据常量定义伪指令EQU用于为程序中的常量、标号等定义一个等效的字符名称,类似于C语言中的#define。EQU语法格式:名称EQU表达式,类型;其中EQU可用“*”代替。名称为EQU伪指令定义的字符名称,当表达式为32位的常量时,可以指定表达式的数据类型,可以有以下三种类型:CODE16、CODE32和DATA。数据变量定义伪指令(Cont.) n数据变量定义伪指令用于定义ARM汇编程序中的变量、对变量赋值以及定义寄存器的别名等操作。常见的数据变量定义伪指令有如下几种:(1)GBLA、GBLL和GBLS语法格式:GBLA(GBLL或GBLS)全局变量名GBLA、GBLL和GBLS伪指令用于定义全局变量,并将其初始化。其中:GBLA用于定义一个全局的数字变量,并初始化为0;GBLL用于定义一个全局的逻辑变量,并初始化F(假);nGBLS用于定义一

      5、个全局的字符串变量,并初始化为空;数据变量定义伪指令(Cont.) n(2)LCLA、LCLL和LCLS语法格式:LCLA(LCLL或LCLS)局部变量名LCLA、LCLL和LCLS伪指令用于定义一个ARM程序中的局部变量,并将其初始化。其中:LCLA伪指令用于定义一个局部的数字变量,并初始化为0;LCLL伪指令用于定义一个局部的逻辑变量,并初始化为F(假);LCLS伪指令用于定义一个局部的字符串变量,并初始化为空;数据变量定义伪指令(Cont.) n(3)SETA、SETL和SETS语法格式:变量名SETA(SETL或SETS)表达式伪指令SETA、SETL、SETS用于给一个已经定义的全局变量或局部变量赋值。SETA伪指令用于给一个数学变量赋值;SETL伪指令用于给一个逻辑变量赋值;SETS伪指令用于给一个字符串变量赋值;数据变量定义伪指令(Cont.) n(4)RLIST语法格式:名称RLIST寄存器列表RLIST伪指令可用于对一个通用寄存器列表定义名称,使用该伪指令定义的名称可在ARM指令LDM/STM中使用。在LDM/STM指令中,列表中的寄存器访问次序为根据寄存器的编号由低

      6、到高,而与列表中的寄存器排列次序无关。3 内存分配伪指令 n内存分配伪指令一般用于为特定的数据分配存储单元,同时可完成已分配存储单元的初始化。常见的数据定义伪指令有如下几种:n(1)DCB语法格式:标号DCB表达式n(2)DCW(或DCWU)语法格式:标号DCW(或DCWU)表达式3 内存分配伪指令(Cont.) n(3)DCD(或DCDU)语法格式:标号DCD(或DCDU)表达式n(4)DCFD(或DCFDU)语法格式:标号DCFD(或DCFDU)表达式n(5)DCFS(或DCFSU)语法格式:标号DCFS(或DCFSU)表达式3 内存分配伪指令(Cont.) n(6)DCQ(或DCQU)语法格式:标号DCQ(或DCQU)表达式n(7)SPACE语法格式:标号SPACE表达式n(8)MAP语法格式:MAP表达式,基址寄存器n(9)FILED语法格式:标号FIELD表达式4 汇编控制伪指令 n汇编控制伪指令用于控制汇编程序的执行流程,常用的汇编控制伪指令包括以下几条:(1)IF、ELSE、ENDIF语法格式:IF逻辑表达式n指令序列1nELSE指令序列2ENDIF汇编控制伪指令(Con

      7、t.) n(2)WHILE、WEND语法格式:WHILE逻辑表达式指令序列WENDn(3)MEXIT语法格式:MEXITMEXIT用于从宏定义中跳转出去。4 汇编控制伪指令(Cont.) n(4)MACRO、MEND语法格式:MACRO$标号宏名$参数1,$参数2,指令序列MENDMACRO、MEND伪指令可以将一段代码定义为一个整体,然后就可以在程序中通过宏指令多次调用该段代码。2008年10月23日南京大学计算机系27子程序结果返回规则n子程序中结果返回的规则如下:q结果为一个32位整数时,可以通过寄存器R0返回;q结果为一个64位整数时,可以通过寄存器R0和Rl返回;q结果为一个浮点数时,可以通过浮点运算部件的寄存器f0、d0或s0来返回;q结果为复合型浮点数(如复数)时,可以通过寄存器f0fn或d0dn来返回;q对于位数更多的结果,需要通过内存来传递。2008年10月23日南京大学计算机系28ARM编译器保有的特定关键字nARM编译器支持一些对ANSIC进行扩展的关键词。这些关键词用于声明变量、声明函数、对特定的数据类型进行一定的限制。2008年10月23日南京大学计算机系29用于声明函数的关键词(双下划线起头)n_asm,内嵌汇编n_inline,内联展开n_irq,声明IRQ或FIQ的ISRn_pure,函数不修改该函数之外的数据n_softfp,使用软件的浮点连接件n_swi,软中断函数n_swi_indirect,软中断函数2008年10月23日南京大学计算机系30用于声明变量的关键词nregisterq声明一个变量,告诉编译器尽量保存到寄存器中。n_int64q该关键词是longlong的同义词。n_global_regq将一个已经声明的变量分配到一个全局的整数寄存器中。

      《ARM指令及汇编程序设计》由会员xian****812分享,可在线阅读,更多相关《ARM指令及汇编程序设计》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2 2022年小学体育教师学期工作总结
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.