ARM汇编语言程序设计.ppt
《ARM汇编语言程序设计.ppt》由会员分享,可在线阅读,更多相关《ARM汇编语言程序设计.ppt(63页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第四章第四章 ARM汇编语言程序设计汇编语言程序设计4.1 汇编语言程序格式汇编语言程序格式4.2 ARM汇编器的伪操作汇编器的伪操作4.3 汇编语言上机过程汇编语言上机过程4.4 汇编语言程序设计汇编语言程序设计4.1 汇编语言程序格式汇编语言程序格式4.1.1 汇编语言程序的组成汇编语言程序的组成AREA Init,CODE,READONLYENTRYStartLDR R0,=0 x3FF5000LDR R1,0 xFFSTR R1,R0LDR R0,=0 x3FF5008LDR R1,0 x01STR R1,R0.ENDAREA Init,CODE,READONLYENTRYStartL
2、DR R0,=0 x3FF5000LDR R1,0 xFFBLPRINT_TEXT.PRINT_TEXT.MOV PC,LREND;FULL SEGMENT DEFINITION-Intel 8086;-stack segment-STACKSEGMENT DB64 DUP(?)STACK ENDS;-data segment-DATASEGMENT;data definitions are placed hereDATAENDS;-code segment-CODESEGMENTMAIN PROC FAR ASSUME CS:CODE,DS:DATA,SS:STACK MOV AX,DATA
3、 MOV DS,AX -MOV AH,4CH INT 21HMAIN ENDPCODEENDS END MAIN4.1.2 汇编语言的语句格式汇编语言的语句格式ARM汇编语言程序的每行语句由14部分组成。LABELOPERATION OPERAND;COMMENT标号域操作助记符域 操作数域注释域4.2 ARM汇编器的伪操作汇编器的伪操作符号定义伪操作(Symbol Definition)数据定义伪操作(Data Definition)汇编控制伪操作(Assembly Control)框架描述伪操作(Frame Description)其他伪操作(Miscellaneous)数据定义伪操作数据
4、定义伪操作数据定义伪操作用于为特定的数据分配存储单元,同时可完成已分配存储单元的初始化。DCB分配一片连续的字节存储单元并初始化。DCW分配一片连续的半字存储单元并初始化。DCD分配一片连续的字存储单元并初始化。SPACE分配一片连续的存储单元并初始化为0。MAP定义一个结构化的内存表首地址。FIELD定义一个结构化的内存表的数据域。DCB格式:标号 DCB表达式功能:DCB伪操作用于分配一片连续的字节存储单元,并用伪操作中指定的表达式初始化。其中,表达式可以为0255的数值或字符串。DCB也可以用“=”代替。示例:StrDCB“This is a test!”DCW格式:标号 DCW表达式功
5、能:DCW伪操作用于分配一片连续的半字存储单元,并用伪操作中指定的表达式初始化。其中,表达式可以为程序标号或数值表达式。用DCW分配的存储单元是半字对齐的。示例:DataTestDCW 1,2,3DCD格式:标号 DCD表达式功能:DCD伪操作用于分配一片连续的字存储单元,并用伪操作中指定的表达式初始化。其中,表达式可以为程序标号或数值表达式。用DCD分配的存储单元是字对齐的。DCD也可 以用 “&”代替。示例:Test DCD4,5,6SPACE格式:标号 SPACE表达式功能:SPACE伪操作用于分配一片连续的存储区域并初始化为0。其中,表达式为要分配的字节数。SPACE也可以用 “%”代
6、替。示例:DataSpace SPACE100MAP格式:MAP 表达式,基址寄存器功能:MAP伪操作用于定义一个结构化的内存表首地址。表达式可以为程序标号或数值表达式,基址寄存器为可选项,当基址寄存器选项不存在时,表达式的值即为内存表的首地址。否则,内存表的首地址为表达式的值与基址寄存器的和。也可以用 “”代替。示例:MAP 0 x100,R0;首地址的值为0 x100+R0FIELD格式:标号 FIELD 表达式 功能:FIELD伪操作用于定义一个结构化的内存表中的数据域。表达式的值为当前数据域在内存表中所占的字节数。FIELD伪操作常与MAP配合使用 来定义结构化的内存表。注意:MAP和
7、FIELD仅用于定义数据结构,并不实际分配存储单元。FIELD也可以用 “#”代替。由MAP和FIELD配合定义的内存表有3种:(1)表达式是一个基于绝对地址的内存表:MAP 0 x100;首地址为0 x100AFIELD 4;A的长度为4字节,位置为0 x100BFIELD 4;B的长度为4字节,位置为0 x104SFIELD 16;S的长度为16字节,位置为0 x108.LDRR0,=A;读取A的地址0 x100LDRR1,R0;将A的内容读到R1(2)表达式是一个数值,是一个相对地址的内存表:MAP0 x04,R9;首地址为R9的值AFIELD 4;A的长度为4字节,相对位置为0BFIE
8、LD 8;B的长度为8字节,相对位置为4SFIELD 96;S的长度为96字节,相对位置为12.LDRR9,=0 x900;表的首地址为0 x904ADRR0,A;读取A的地址0 x904LDRR2,R0;将A的内容读到R2.LDRR9,=0 x2000;同一表的首地址为0 x2004ADRR1,B;读取B的地址0 x2008STRR9,R1;将R9的内容写到B(3)表达式是一个标号,基于PC的内存表:Data SPACE 100;分配100字节的内存单元初始化0MAPData;首地址为Data内存单元AFIELD 4;A的长度为4字节,相对位置为0BFIELD 4;B的长度为4字节,相对位置
9、为4SFIELD 4;S的长度为4字节,相对位置为8.LDRR5,B;相当于LDR R5,PC,#4 其它常用的伪操作其它常用的伪操作AREA格式:AREA 段名属性1,属性2,功能:AREA伪操作定义一个代码段、数据段或特定属性的段。CODE:定义代码段。DATA:定义数据段。READONLY:只读,代码段默认。READWRITE:可读可写,数据段默认。一个汇编程序至少包含一个段,当程序太长时,也可以将程序分为多个代码段和数据段。AREA Init,CODE,READONLYENTRYBSTARTAREA Stack,DATA,READWRITESAVESPACE20AREA Init,CO
10、DE,READONLYSTARTADDR1,R2,R3BSTARTALIGN格式:ALIGN表达式,偏移量功能:ALIGN可通过添加填充字节的方式,使当前位置满足一定的对齐方式。其中,表达式的值用于指定对齐方式,可能取的值为2的幂,如1、2、4、8、16等。如果没有指定表达式,则将当前位置对齐到下一个字的位置。ADDR0,R4,R5BSTARTDATA1DCB“strin”ALIGN 4STARTLDRR0,R54.3 汇编语言上机过程汇编语言上机过程1.编辑汇编语言源程序2.编译源程序3.链接汇编程序4.调试汇编程序4.4 汇编语言程序设计汇编语言程序设计4.3.1 程序设计步骤程序设计步骤
11、4.3.2 简单程序设计(顺序、分支、循环)简单程序设计(顺序、分支、循环)4.3.3 子程序设计子程序设计4.3.4 模式切换程序设计模式切换程序设计4.3.5 汇编语言和汇编语言和C语言编程语言编程模块化的程序设计模块化的程序设计(从功能分析(从功能分析战略上)战略上)汇编语言程序设计的基本方法(战术上看)汇编语言程序设计的基本方法(战术上看)l程序设计步骤(对每一模块)程序设计步骤(对每一模块)1.1.问题定义问题定义2.2.算法设计算法设计3.3.选择指令选择指令4.4.编写程序编写程序l结构化程序设计(算法设计)结构化程序设计(算法设计)1.1.顺序结构顺序结构2.2.分支结构分支结
12、构 3.3.循环结构循环结构4.4.子程序设计子程序设计l上机过程(具体实现)上机过程(具体实现)1.1.编辑程序编辑程序2.2.汇编源程序汇编源程序3.3.链接程序链接程序4.4.调试源程序调试源程序结构化程序设计概述:结构化程序设计概述:写任何程序最成功的方式是先人工的解决问题写任何程序最成功的方式是先人工的解决问题找出算找出算法!法!用结构用结构IFTHENELSE,CASE,REPEATUNTIL,WHILEDO,FORDO写算法,然后再将该算法翻译成一种合适的程序设计语言写算法,然后再将该算法翻译成一种合适的程序设计语言结构化的程序设计!结构化的程序设计!程序设计步骤程序设计步骤 1
13、.1.问题的定义问题的定义仔细思考程序所要解决的问题,即用自然语言描述仔细思考程序所要解决的问题,即用自然语言描述“做什么做什么?以及程序做这些工作时的时序?以及程序做这些工作时的时序”如:如:1.1.从传感器读取温度值。从传感器读取温度值。2.2.加上调整因子。加上调整因子。3.3.将结果存储在存储单元里。将结果存储在存储单元里。2.2.算法及表示方法算法及表示方法用来表示程序设计问题的操作序列或步骤用来表示程序设计问题的操作序列或步骤算法,算法,即即“怎样做怎样做?”。表示方法:表示方法:1 1)流程图)流程图 2 2)伪指令)伪指令3.3.选择适当的指令(按功能)选择适当的指令(按功能)
14、一、数据传送类指令一、数据传送类指令二、算术运算指令二、算术运算指令三、逻辑操作指令三、逻辑操作指令四、程序控制指令四、程序控制指令4.4.编写程序(从算法到程序)编写程序(从算法到程序)(1 1)建立算法使用的数据结构)建立算法使用的数据结构 1 1)数据将存放在存储器还是存放在寄存)数据将存放在存储器还是存放在寄存器中?器中?2 2)数据类型是字节、半字或字?)数据类型是字节、半字或字?3 3)有多少数据项?)有多少数据项?4 4)数据为无符号数还是符号数?)数据为无符号数还是符号数?(2 2)在代码段开始处写出变量、段寄存器、外围设)在代码段开始处写出变量、段寄存器、外围设备等所需要的初
15、始化指令备等所需要的初始化指令(3 3)选择实现算法中每一主要动作所需要的指令,)选择实现算法中每一主要动作所需要的指令,并决定数据在这些指令中的存放形式。并决定数据在这些指令中的存放形式。(4 4)按照主要指令的要求,用)按照主要指令的要求,用LDR、STR指令或指令或MOV指令把数据送到正确的位置。指令把数据送到正确的位置。顺序程序设计:已知32位变量X、Y存放在存储器的地址0 x90010、0 x90014中,要求实现Z=X+Y,并且Z的值存放在0 x90018中。AREA Exam,CODE,READONLYENTRYSTARTLDRR0,=0 x90010LDRR1,R0,#4LDR
16、R2,R0,#4ADDR1,R1,R2STRR1,R0END分支程序设计:已知32位有符号数X存放在存储器的地址0 x90010中,要求实现:Y=X (X=0)或 Y=-X (X0)AREA Exam CODE READONLYENTRYSTARTLDRR1,=0 x90010LDRR2,R1MOVR0,#0CMPR2,R0SUBLT R2,R0,R2STRR2,R1END已知32位有符号数X存放在存储器的地址0 x90010中,要求实现:Y=1(X0)或 Y=0(X=0)或Y=-1(X=num then simply return ADR r3,JumpTable ;Load address
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ARM 汇编语言 程序设计
限制150内