历史上的今天
返回首页

历史上的今天

今天是:2025年04月03日(星期四)

正在发生

2020年04月03日 | ARM体系结构与编程-2

2020-04-03 来源:eefocus

ARM汇编语言程序设计:ARM汇编语言源程序中的语句由指令、伪操作和宏指令组成。ARM指令已经在上一节介绍过了。


ARM伪操作和宏指令分类:

<1>符号定义伪操作

GBLA:声明一个全局的算术变量,并将其初始化为0。 语法:GBLA variable

GBLL:声明一个全局的逻辑变量,并将其初始化为FALSE 语法:GBLL variable

GBLS:声明一个全局的串变量,并将其初始化为空串“” 语法:GBLS variable

LCLA:声明一个局部的算术变量,并将其初始化为0 语法:LCLA variable

LCLL:声明一个局部的逻辑变量,并将其初始化为FALSE 语法:LCLL variable

LCLS:声明一个局部的串变量,并将其初始化为空串“” 语法:LCLS variable

SETA:给一个算术变量赋值 语法:SETA variable expr

SETL:给一个逻辑变量赋值 语法:SETL variable expr

SETS:给一个串变量赋值 语法:SETS variable expr

RLIST:为一个通用寄存器列表定义名称 语法:name RLIST {list-of-registers}

CN:为一个协处理器的寄存器定义名称 语法:name CN expr

CP:为一个协处理器定义名称 语法:name CP expr


<2>数据定义伪操作

LTORG:用于声明一个数据缓冲池的开始 语法:LTORG

MAP:用于定义一个结构化的内存表的首地址 语法:MAP expr{, base-register}

FIELD:用于定义一个结构化的内存表中的数据域,#是FIELD的同义词 语法:{label} FIELD expr

SPACE:用于分配一块内存单元,并用0初始化,%是SPACE的同义词 语法:{label} SPACE expr

DCB:用于分配一段字节内存单元,并用expr初始化,=是DCB的同义词 语法:{label} DCB expr

DCD:用于分配一段字内存单元,并用expr初始化,&是DCD的同义词 语法:{label} DCD expr


<3>汇编控制伪操作

IF,ELSE及ENDIF:[是IF伪操作的同义词,|是ELSE伪操作的同义词,]是ENDIF伪操作的同义词。


WHILE及WEND:

MACRO及MEND:语法:

MACRO 

{$label} macroname {$parameter1{,parameter2}...}

;code

...

;code

MEND

MEXIT:用于从宏中跳转出去


<4>框架描述伪操作

CODE16:告诉汇编器后面的指令序列为16位的Thumb指令 语法:CODE16

CODE32:告诉汇编器后面的指令序列为32位的ARM指令 语法:CODE32

EQU:为数字常量和程序中的标号定义一个字符名称,*是EQU的同义词。 语法:name EQU expr{, type}

AREA:用于定义一个代码段或者数据段。一个大的程序可以包含多个代码段和数据段。一个汇编程序至少包含一个段。 语法:AREA sectionname{,attr1}{,attr2}...

ENTRY:指定程序的入口点。一个程序中至少要有一个ENTRY,一个源文件中最多只能有一个ENTRY 语法:ENTRY

END:告诉汇编器已经到了源程序的结尾。每个汇编程序都包含END,以告知本源程序的结束。


ALIGN:通过添加补丁字节,使得当前位置满足一定的对齐方式。 语法:ALIGN {expr,{, offset}}

EXPORT:声明一个符号可以被其他文件引用,相当于声明了一个全局变量。 语法:EXPORT symbol{[WEAK]}

IMPORT:告诉汇编器当前的符号不是在本源文件中定义的,而是在其他源文件中定义的,在本源文件中可以引用该符号。不论本源文件是否引用,该符号都将被加入到本源文件的符号表中。 语法:IMPORT symbol{[WEAK]}

EXTERN:告诉汇编器当前的符号不是在本源文件中定义的,而是在其他源文件中定义的,在本源文件中可以引用该符号。如果本源文件实际上没有引用该符号,它将不会被加入到本源文件的符号表中。 语法:EXTERN symbol{[WEAK]}

GET及INCLUDE;将一个源文件包含到当前源文件中,并将被包含的文件在当前位置进行汇编处理。 语法:GET filename


<5>信息报告伪操作

ASSERT:用于保证源程序被汇编时满足相关条件,如果条件不满足,ASSERT伪操作报告错误类型并终止汇编。 语法:ASSERT logical-expression


<6>杂项伪操作

ARM汇编语言伪指令:这些伪指令不是真正的ARM或Thumb指令,这些伪指令在汇编时被替换成对应的ARM或Thumb指令。


ADR伪指令:小范围的地址读取指令,该指令将基于PC的地址或者基于寄存器的地址读取到寄存器中。该指令在汇编时被替换成一条指令。


语法:ADR{cond} register, expr

ADRL伪指令:中等范围的地址读取指令,该指令将基于PC的地址或者基于寄存器的地址读取到寄存器中。该指令在汇编时被替换成两条指令。


语法:ADRL{cond} register, expr

LDR伪指令:大范围的地址读取指令,该指令将一个32位常数或地址值读取到寄存器中。

语法:LDR{cond} register, =expr

NOP:空操作指令


ARM汇编语言语句格式:如下:

{symbol} {instruction|directive|pseudo-instruction} {;commnet}

symbol:符号

instrution:指令,在ARM汇编语言中,指令不能从一行的行头开始,在一行语句中,指令的前面必须有空格或者符号

directive:伪操作

pseudo-instruction:伪指令

comment:语句注释。在ARM汇编语言中,注释以;开头。


ARM汇编语言程序格式:ARM汇编语言以段(section)为单位组织源文件,段又分为代码段、数据段。一个ARM源程序至少需要一个代码段,大的程序可以包含多个代码段和数据段。

推荐阅读

史海拾趣

Engineered Components Co公司的发展小趣事

在稳固了国内市场后,ECC开始积极拓展国际市场。他们参加了多个国际电子展会,展示了公司的技术和产品。通过与国际客户的交流与合作,ECC逐渐打开了国际市场的大门。同时,ECC还与国际知名电子企业建立了长期合作关系,共同研发新产品、开拓市场。这些举措使得ECC在国际市场上的知名度不断提升。

Alan Industries Inc公司的发展小趣事

Alan Industries Inc.自创立之初,就以其对技术研发的不懈追求而闻名。在公司成立的早期,其研发团队成功开发出一款高效能、低功耗的芯片,这一创新产品在市场上引起了巨大反响。随后,公司不断投入研发资源,推出了一系列具有竞争力的电子产品,逐渐在行业中树立了技术领先的地位。这些产品不仅满足了消费者对电子产品性能的需求,还为公司带来了可观的利润,为公司的快速发展奠定了坚实基础。

Aplus Integrated Circuits公司的发展小趣事

为了保持技术领先地位,Aplus Integrated Circuits公司注重产学研合作。公司与多所高校和研究机构建立了紧密的合作关系,共同开展科研项目和技术攻关。这种合作模式不仅为公司带来了源源不断的技术创新动力,还为公司培养了一批高素质的研发人才。

Apex Tool Group公司的发展小趣事

为了保持技术领先地位,Aplus Integrated Circuits公司注重产学研合作。公司与多所高校和研究机构建立了紧密的合作关系,共同开展科研项目和技术攻关。这种合作模式不仅为公司带来了源源不断的技术创新动力,还为公司培养了一批高素质的研发人才。

Electro-Optical Systems Inc公司的发展小趣事

面对未来,EOS制定了明确的发展战略和规划。他们将继续深耕红外探测器领域,不断提升产品性能和质量。同时,EOS也将积极布局新领域,探索新的增长点。他们关注新兴技术如人工智能、物联网等的发展动态,寻求与这些技术的深度融合和应用。通过不断创新和拓展新领域,EOS将为实现企业的可持续发展注入新的动力。

请注意,以上故事框架是基于EOS在红外探测器领域的发展情况和行业趋势进行构建的,具体细节和数据可能需要根据实际情况进行调整和完善。

昆泰(CHRONTEL)公司的发展小趣事

进入21世纪后,昆泰的创始人Dr. Gillings不满足于CRO企业的平稳收益和稳定现金流,他开始寻求与药企建立更加紧密的战略合作伙伴关系。为此,昆泰在2000年成立了PharmaBio部门,通过资金、技术和销售团队为客户提供全方位的支持。这一战略转型不仅使昆泰与药企建立了深厚的合作关系,还为其带来了丰厚的回报。

问答坊 | AI 解惑

单片机驱动VGA接口的CRT显示器或LCD---VGA控制板

一、概述 智能VGA控制板专业针对单片机用户而精心设计,是一款可用单片机(51或AVR或PIC等等单片机)直接控制VGA/LCD显示器的智能显示产品。使用简单方便、便于产品的快速开发。用户完全不用了解VGA/LCD的工作原理及显示方式,只需用单片机通过串口简 ...…

查看全部问答>

吐一下槽

只想吐一下槽,没别的意思。 这一个学期以来,一个人几乎当成三个人在用。   考研要复习——尽管现在进度比较尴尬,但是我确实花了不少时间。   课程比较费劲,尽管这不是我喜欢的专业,但是,这个学期的课却是做多的,总共八门课— ...…

查看全部问答>

请教:wince6.0下dm9000,ping不稳定问题

现在在6410下,网络芯片是dm9000,能够找到网络芯片ID,也能够ping了,发现ping不稳定,容易丢包: PING: transmit failed, error code 11010 Reply from 192.168.0.9: Echo size=32 time=1ms TTL=64 PING: transmit failed, error code 11010 ...…

查看全部问答>

有谁知道cdma手机uim卡bcd编码标准?

电话号可以输入0,1···9,*,#等,用bcd编码存在手机卡里?有谁知道统一的标准吗? 非常感谢…

查看全部问答>

关于角度传感器于单片机

我要设计一个通过角度传感器检测到被手动摆动了的小木棍的角度,然后通过单片机分析再去驱动一个步进机,转到同样的角度。 请问一下,我该用什么角度传感器呢??我在网上查了很多资料,发觉那些角度传感器都很贵的,对我们学生来说太贵了。那位朋 ...…

查看全部问答>

嵌入式注意什么?

我是学软件的,想向嵌入式发展,请问做嵌入式系统要注意什么?还有学哪几本书比较好?…

查看全部问答>

收发不正常

                                 USART在调试状态时还没有问题,断电后再启动就收发不正常啦…

查看全部问答>

求购xds560仿真器

需要人在北京,当面交易。…

查看全部问答>

工具开关

 工具开关又称“电动工具开关”,是现代自动化高速发展的产物。工具开关是智能化电路应用于电动工具,是一系列对电动工具的操作集成于一个开关,并达到方便、安全、环保等要求。工具开关的规格可定制能力强,可以按照机械的需要来设计电路、选择塑 ...…

查看全部问答>