




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ARM汇编学习笔记转 1、ARM汇编的格式: 在ARM汇编里,有些字符是用来标记行号的,这些字符要求顶格写;有些伪码是需要成对出现的,例如ENTRY和END,就需要对齐出现,也就是说他们要么都顶格,要么都空相等的空,否则编译器将报错。常量定义需要顶格书写,不然,编译器同样会报错。 2、字符串变量的值是一系列的字符,并且使用双引号作为分界符,如果要在字符串中使用双引号,则必须连续使用两个双引号。 3、在使用LDR时,当格式是LDR r0,=0x022248,则第二个参数表示地址,即0x022248,同样的,当src变量代表一个数组时,需要将r0寄存器指向src则需要这样赋值:LDR r0,=src 当格式是LDR r0,r2,则第二个参数表示寄存器,我的理解是符号表示取内容,r2本身表示一个寄存器地址,取内容候将其存取r0这个寄存器中。 4、在语句:(大于等于都会跳转) CMP r0,#num BHS stop 书上意思是:如果r0寄存器中的值比num大的话,程序就跳转到stop标记的行。但是,实际测试的时候,我发现如果r0和num相等也能跳转到stop标记的行,也就是说只要r0小于num才不会跳转。 下面就两个具体的例子谈谈ARM汇编(这是我昨天好不容易看懂的,呵呵)。 第一个是使用跳转表解决分支转移问题的例程,源代码如下(保存的时候请将文件后缀名改为s): AREA JumpTest,CODE,READONLY CODE32num EQU 4ENTRYstart MOV r0, #4 MOV r1, #3 MOV r2, #2 MOV r3, #0 CMP r0, #num BHS stop ADR r4, JumpTable CMP r0, #2 MOVEQ r3, #0 LDREQ pc, r4,r3,LSL #2 CMP r0, #3 MOVEQ r3, #1 LDREQ pc, r4,r3,LSL #2 CMP r0, #4 MOVEQ r3, #2 LDREQ pc, r4,r3,LSL #2 CMP r0, #1 MOVEQ r3, #3 LDREQ pc, r4,r3,LSL #2DEFAULT MOVEQ r0, #0SWITCHENDstop MOV r0, #0x18 LDR r1, =0x20026 SWI 0x123456JumpTable DCD CASE1 DCD CASE2 DCD CASE3 DCD CASE4 DCD DEFAULTCASE1 ADD r0, r1, r2 B SWITCHENDCASE2 SUB r0, r1, r2 B SWITCHENDCASE3 ORR r0, r1, r2 B SWITCHENDCASE4 AND r0, r1, r2 B SWITCHENDEND 程序其实很简单,可见我有多愚笨!还是简要介绍一下这段代码吧。首先用AREA伪代码加上CODE,表明下面引出的将是一个代码段(于此相对的还有数据段DATA),ENTRY 和END成对出现,说明他们之间的代码是程序的主体。start段给寄存器初始化。ADR r4, JumpTable一句是将相当于数组的JumpTable的地址付给r4这个寄存器。 stop一段是用来是程序退出的,第一个语句“MOV r0,#0x18”将r0赋值为0x18,这个立即数对应于宏angel_SWIreason_ReportException。表示r1中存放的执行状态。语句“LDR r1,=0x20026”将r1的值设置成ADP_Stopped_ApplicationExit,该宏表示程序正常退出。然后使用SWI,语句“SWI 0x123456”结束程序,将CPU的控制权交回调试器手中。 在JumpTable表中,DCD类型的数组包含四个字,所以,当实现CASE跳转的时候,需要将给出的索引乘上4,才是真正前进的地址数。 再看一个用汇编实现冒泡排序的例程: AREA Sort,CODE,READONLYENTRYstart MOV r4,#0 LDR r6,=src ADD r6,r6,#lenouter LDR r1,=srcinner LDR r2,r1 LDR r3,r1,#4 CMP r2,r3 STRGT r3,r1 STRGT r2,r1,#4 ADD r1,r1,#4 CMP r1,r6 BLT inner ADD r4,r4,#4 CMP r4,#len SUBLE r6,r6,#4 BLE outerstop MOV r0,#0x18 LDR r1,=0x20026 SWI 0x123456 AREA Array,DATA,READWRITEsrc DCD 2,4,10,8,14,1,20len EQU 7*4 END 用汇编实现循环需要跳转指令,但是因为ARM系统只有一个CPSR寄存器,所以要实现双重循环还是有些难度。上面这个代码还是有相当大的借鉴意义。程序不难读懂,和C语言的冒泡排序基本思路是完全一样的。Load CodeWarrior from the Start Menu. Create a new project (File | New), select ARM Executable Image and give it the name hello. Create a new assembler source file (File | New Text File) and paste the following code in it. ; Hello world in ARM assembler AREA text, CODE ; This section is called text, and contains code ENTRY ; Print Hello world ; Get the offset to the string in r4. adr r4, hello ; address in registerloop ; loop is a label and designates an address ; Call putchar to display each character ; to illustrate how a loop works ldrb r0, r4, #1 ; Get next byte and post-index r4 cmp r0, #0 ; Stop when we hit a null beq outputstring ; branch if equal = cond. goto bl putchar b loop ; branch = gotooutputstring ; Alternatively, use putstring to write out the ; whole string in one go adr r0, hello bl putstring ; branch+link = subroutine callfinish ; Standard exit code: SWI 0x123456, calling routine 0x18 ; with argument 0x20026 mov r0,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025陕西西安建工第五建筑集团有限公司3月招聘笔试历年参考题库附带答案详解
- 2025陕西榆林市吴堡县县属国有企业招聘笔试历年参考题库附带答案详解
- 2025贵州安立航空材料有限公司招聘工作人员及笔试历年参考题库附带答案详解
- 2025湖南省低空经济发展集团有限公司招聘12人(第二次)模拟试卷带答案详解
- 2025浙江温州交运集团选聘温州低空经济发展有限公司副总经理1人笔试历年参考题库附带答案详解
- 2025年六安金寨县红旅客运有限公司公开招聘劳务外包制旅游客车储备驾驶员2名笔试历年参考题库附带答案详解
- 2025内蒙古赛雅人力资源服务有限公司面向社会公开招聘196名劳务派遣列车服务人员笔试历年参考题库附带答案详解
- 2025科学技术部国际科技合作中心SKAO国际组织职员招聘考前自测高频考点模拟试题及答案详解(夺冠系列)
- 2025广西来宾市政协办公室招聘所属事业单位后勤服务控制数人员1人考前自测高频考点模拟试题及1套完整答案详解
- 2025昆明市晋宁区文化和旅游局招聘编外工作人员(1人)模拟试卷附答案详解(黄金题型)
- 三年级上册语文《总也倒不了的老屋》
- 2024春期国开电大本科《中国现代文学专题》在线形考(阶段作业1至4+专题讨论1至2)试题及答案
- 楼梯-栏杆-栏板(一)等24项国家建筑标准设计
- 大型连锁医药零售企业发展模式
- 光伏发电项目设计任务书
- 站务员:站务员考点巩固(题库版)
- 大学美育(第二版) 课件 第七单元:设计艺术
- 成人高流量湿化氧疗临床应用规范专家共识2019
- 电大公共政策概论形考任务1-4答案
- 中职生安全教育PPT完整全套教学课件
- 网站信息发布审核制度
评论
0/150
提交评论