微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > ARM汇编常用伪操作总结

ARM汇编常用伪操作总结

时间:11-29 来源:互联网 点击:

KB 地址范围的数据域

示例 2 :

下面的伪操作序列定义一个内存表,其首地址为 0 ,该内存表中包括 5 个数据域: consta 长度为 4 个字节; constb 长度为 4 个字节; x 长度为 8 个字节; y 长度为 8 个字节; string 长度为 256 个字节。这种内存表称为基于相对地址的内存表。

MAP 4096 ;内存表的首地址为 0

consta FIELD 4 ; consta 长度为 4 个字节,相对位置为 0

constb FIELD 4 ; constb 长度为 4 个字节,相对位置为 4

x FIELD 8 ; x 长度为 4 个字节,相对位置为 8

y FIELD 8 ; y 长度为 4 个字节,相对位置为 16

string FIELD 256 ; string 长度为 256 字节,相对位置为 24

; 可以通过下面的指令方便地访问地址范围超过 4KB 的数据

MOV R9 , #4096

LDR R5 , [R9,constb] ;将内存表中数据域 constb 读取到 R5 中

在这里,内存表中各数据域的实际内存地址不是基于一个固定地址,而是基于 LDR 指令执行时 R9 寄存器中的内容。这样通过上面方法定义的内存表结构可以在程序中有多个实例(通过在 LDR 指令中指定不同的基址寄存器值来实现)。通常用 R9 作为静态基址寄存器。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top