- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第四章 ARM汇编语言程序设计;4.1 汇编语言程序格式; AREA Init, CODE, READONLY
ENTRY
Start LDR R0, =0x3FF5000
LDR R1, 0xFF
BL PRINT_TEXT
….
….
PRINT_TEXT
….
….
MOV PC, LR
END;4.1.2 汇编语言的语句格式;4.2 ARM汇编器的伪操作;数据定义伪操作;DCB
格式:标号 DCB 表达式
功能:DCB伪操作用于分配一片连续的字节存储单 元,并用伪操作中指定的表达式初始化。其 中,表达式可以为0~255的数值或字符串。 DCB也可以用“=”代替。
示例:
Str DCB “This is a test!”
;DCW
格式:标号 DCW 表达式
功能:DCW伪操作用于分配一片连续的半字存储单 元,并用伪操作中指定的表达式初始化。其 中,表达式可以为程序标号或数值表达式。用 DCW分配的存储单元是半字对齐的。
示例:
DataTest DCW 1,2,3;DCD
格式:标号 DCD 表达式
功能:DCD伪操作用于分配一片连续的字存储单 元,并用伪操作中指定的表达式初始化。其 中,表达式可以为程序标号或数值表达式。用 DCD分配的存储单元是字对齐的。DCD也可
以用 “”代替。
示例:
Test DCD 4,5,6;SPACE
格式:标号 SPACE 表达式
功能:SPACE伪操作用于分配一片连续的存储区 域并初始化为0。其中,表达式为要分配的字 节数。SPACE也可以用 “%”代替。
示例:
DataSpace SPACE 100;MAP
格式:MAP 表达式 {,基址寄存器}
功能:MAP伪操作用于定义一个结构化的内存表首地 址。表达式可以为程序标号或数值表达式,基 址寄存器为可选项,当基址寄存器选项不存在 时,表达式的值即为内存表的首地址。否则, 内存表的首地址为表达式的值与基址寄存器的 和。也可以用 “^”代替。
示例:
MAP 0x100,R0 ;首地址的值为0x100+R0;FIELD
格式:标号 FIELD 表达式
功能: FIELD伪操作用于定义一个结构化的内存表中 的数据域。表达式的值为当前数据域在内存表中 所占的字节数。 FIELD伪操作常与MAP配合使用 来定义结构化的内存表。注意:MAP和FIELD仅 用于定义数据结构,并不实际分配存储单元。 FIELD也可以用 “#”代替。
由MAP和FIELD配合定义的内存表有3种:;(1)表达???是一个基于绝对地址的内存表:
MAP 0x100 ;首地址为0x100
A FIELD 4 ;A的长度为4字节,位置为0x100
B FIELD 4 ;B的长度为4字节,位置为0x104
S FIELD 16 ;S的长度为16字节,位置为0x108
….
LDR R0, =A ;读取A的地址0x100
LDR R1, [R0] ;将A的内容读到 R1;(2)表达式是一个数值,是一个相对地址的内存表:
MAP 0x04 ,R9 ;首地址为R9的值
A FIELD 4 ;A的长度为4字节,相对位置为0
B FIELD 8 ;B的长度为8字节,相对位置为4
S FIELD 96 ;S的长度为96字节,相对位置为12
….
LDR R9, =0x900 ;表的首地址为0x904
ADR R0, A ;读取A的地址0x904
LDR R2, [R0] ;将A的内容读到R2
….
LDR R9, =0x2000 ;同一表的首地址为0x2004
ADR R1, B ;读取B的地址0x2008
STR R9, [R1] ;将R9的内容写到B;(3)表达式是一个标号,基于PC的内存表:
Data SPACE 100 ;分配100字节的内存单元初始化0
MAP Data ;首地址为Data内存单元
A FIELD 4 ;A的长度为4字节,相对位置为0
B FIELD 4 ;B的长度为4字节,相对位置为4
S FIELD 4 ;S的长度为4字节,相对位置为8
….
LDR R5, B ;相当于LDR R5,[PC,#4]
;其它常用的伪操作; AREA Init,CODE,READONLY
ENTRY
…
B START
AREA Stack,DATA,READWRITE
SAVE SPACE 20
AREA Init,CODE,READONLY
START ADD R1,R2,R3
原创力文档


文档评论(0)