第8章ARM汇编语言程序
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
8.1ARM处理器的寻址方式 8.2ARM处理器汇编语言指令 8.3ARM汇编语言伪指令 8.4ARM汇编语言语句格式 8.5ARM汇编语言程序设计8.1ARM处理器的寻址方式 1.立即数寻址 2.寄存器寻址 3.寄存器间接寻址 4.基址变址寻址 5.多寄存器寻址 6.相对寻址 7.堆栈寻址 8.寄存器移位寻址8.2ARM处理器汇编语言指令 8.2.1ARM指令概述 8.2.2Thumb指令概述8.2.1ARM指令概述 ARM微处理器的指令集主要有6大类,分别是跳转指令、数据处理指令(包括乘法指令与乘加指令)、程序状态寄存器(PSR)处理指令、加载/存储指令、协处理器指令、异常产生指令。 在ARM的指令中,操作数有时要先进行移位操作,然后再参与指令的工作,移位操作主要有LSL(或ASL)操作、LSR操作、ASR操作、ROR操作和RRX操作。8.2.2Thumb指令概述 Thumb指令集是ARM指令集的一个子集,允许指令编码为16位的长度。与等价的32位代码相比较,Thumb指令集在保留32代码优势的同时,可以在很大程度上节省系统的存储空间。当处理器在执行ARM程序段时,称ARM处理器处于ARM工作状态;当处理器在执行Thumb程序段时,称ARM处理器处于Thumb工作状态。 所有的Thumb指令都有对应的ARM指令,而且Thumb的编程模型也对应于ARM的编程模型,在应用程序的编写过程中,只要遵循一定调用的规则,Thumb子程序和ARM子程序就可以互相调用,二者结合应用可以充分发挥各自的特点,取得较好的效果。8.3ARM汇编语言伪指令 8.3.1符号定义伪指令 8.3.2数据定义伪指令 8.3.3汇编控制伪指令 8.3.4其他常用的伪指令8.3.1符号定义伪指令 符号定义伪指令用于定义ARM汇编程序中的变量、对变量赋值以及定义寄存器的别名等操作。常见的符号定义伪指令有:用于定义全局变量的GBLA、GBLL和GBLS,用于定义局部变量的LCLA、LCLL和LCLS,用于对变量赋值的SETA、SETL、SETS,为通用寄存器列
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
定义名称的RLIST。8.3.2数据定义伪指令 数据定义伪指令一般用于为特定的数据分配存储单元,同时可完成已分配存储单元的初始化。常见的数据定义伪指令有如下几种:DCB用于分配一片连续的字节存储单元并用指定的数据初始化;DCW(DCWU)用于分配一片连续的半字存储单元并用指定的数据初始化;DCD(DCDU)用于分配一片连续的字存储单元并用指定的数据初始化;DCFD(DCFDU)用于为双精度的浮点数分配一片连续的字存储单元并用指定的数据初始化;DCFS(DCFSU)用于为单精度的浮点数分配一片连续的字存储单元并用指定的数据初始化;DCQ(DCQU)用于分配一片以8字节为单位的连续的存储单元并用指定的数据初始化;SPACE用于分配一片连续的存储单元;MAP用于定义一个结构化的内存表首地址;FIELD用于定义一个结构化的内存表的数据域。8.3.3汇编控制伪指令汇编控制伪指令用于控制汇编程序的执行
流程
快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计
,常用的汇编控制伪指令包括以下几条: 1.IF、ELSE、ENDIF语法格式:IF逻辑表达式指令序列1ELSE指令序列2ENDIF 2.WHILE、WEND语法格式:WHILE逻辑表达式指令序列WEND 3.MACRO、MEND语法格式:$标号宏名MACRO$参数1,$参数2,……指令序列MEND 4.MEXIT语法格式:MEXIT8.3.4其他常用的伪指令 还有一些其他的伪指令在汇编程序中会被使用,包括以下几条:AREA;ALIGN;CODE16、CODE32;ENTRY;END;EQU;EXPORT(或GLOBAL);IMPORT;EXTERN;GET(或INCLUDE);INCBIN;RN;ROUT。8.4ARM汇编语言语句格式 8.4.1ARM汇编语言中的符号 8.4.2ARM汇编语句中的表达式8.4.1ARM汇编语言中的符号 在汇编语言程序设计中,经常使用各种符号代替地址、变量和常量等,以增加程序的可读性。符号的命名由程序员决定,但必须遵循以下约定: 符号由大小写字母、数字以及下划线组成 符号是区分大小写的 符号中的所有字符都是有意义的 符号在其作用范围内必须唯一,即在其作用范围内不可有同名的符号 程序中的符号不能与系统内部变量或者系统预定义的符号同名 程序中的符号通常不要与指令助记符或者伪操作同名。当同名时,用双竖线将符号括起来 1.常量程序中的常量是指其值在程序运行过程中不能被改变的量。ARM汇编程序所支持的常量有数字常量、逻辑常量和字符串常量。 2.变量程序中的变量是指程序运行过程中可以改变的量。ARM汇编程序所支持的变量有有数字变量、逻辑变量和字符串变量。 3.标号标号代表一个地址。段内标号的地址值在汇编时确定,段外标号的值在连接时确定。根据标号的生成方式,程序标号可分为三种。8.4.2ARM汇编语句中的表达式表达式由符号、数值、单目或多目操作符以及括号组成。常用的表达式有数字表达式、逻辑表达式和字符串表达式,在一个表达式内各种元素的优先级如下:括号内的表达式优先级最高各种操作符有一定的优先级相邻的单目操作符的执行顺序为由右到左,单目操作符优先级高于其他操作符优先级相同的双目操作符执行顺序为由左到右 1.数字表达式 2.逻辑表达式 3.字符串表达式 4.其他常用运算符8.5ARM汇编语言程序设计 8.5.1汇编语言的程序格式 8.5.2ARM指令的汇编程序设计8.5.1汇编语言的程序格式 在ARM汇编语言程序中,以段(section)为单位组织代码:,段是相对独立的、具有特定名称的指令或数据序列。段可以分为代码段和数据段。 可执行映像文件通常由以下几部分构成: 一个或多个代码段,代码段的属性通常为只读 零个或多个包含初始化数据的数据段,数据段的属性为可读写 零个或多个不包含初始化数据的数据段,数据段的属性为可读写。8.5.2ARM指令的汇编程序设计 1.条件执行程序设计 2.利用ALU标志位优化条件语句 3.传送类(Load&Store)指令程序设计 4.宏定义和使用