在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!) 创芯人才网--重磅上线啦!
查看: 1703|回复: 0

[资料] ARM汇编程序实例1

[复制链接]
发表于 2016-2-22 16:04:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x

下面列举了几个ARM汇编程序的简单实例,给出了详细的说明;分别给出了完成同一功能的程序在ADS编译环境和GNU编译环境下的不同形式,并在最后列出了由ADS环境向GNU环境下转变时所需要的替换。请注意它们的不同之处。

示例 简单的ARM指令程序。

ADS编译环境下,程序如下:

AREA     ARMexCODE,READONLY;设置本段程序的名称及属性,代码段的名称为ARMex

ENTRY                                             ;标记要执行的第一条指令

Start              MOV      R0,#10                  ;设置参数

              MOV      R1,R3                  

              ADD       R0,R0,R1              ;R0=R0+R1

Stop        MOV      R0,#&18               ;软中断参数设置

              LDR       R1=&20026       ;软中断参数设置

              SWI        0x123456              ;CPU的控制权交给调试器

END                                                 ;文件的结束标志

1AREA指示符定义本程序段为代码段,名字是ARMex,属性为只读。通常一个汇编程序可包括多个段,如代码段、可读/写的数据段等。代码段中也可定义数据。该行中的信息将供链接器使用。

2ENTRY指示符标记程序中被执行的第一条指令,即标志入口地址。在一个ARM程序中可以有多个ENTRY,但至少要有一个ENTRY

3start是一个标号,表示代码的开始,其值是一个地址。其后是ARM指令,利用MOV指令将立即数10赋给寄存器R0.

4:利用MOV指令将立即数3赋给寄存器R1.

5:计算R0=R0+R1.

6~8:这三条指令将系统控制权交换给调试器,结束程序运行。此处是通过向Angel发送一个软中断实现的。Angel的软中断号是0x123456,实现该功能的中断参数是R0=0x18R1=0x20026.

9END指示符指示汇编器结束对该源程序的处理,所以每个汇编程序都必须包含一个END行。

GNU编译环境下(基于Embest IDE环境开发环境),该程序如下:

.global_start

.text                                                  /标志代码段/

_start      MOV      R0,#10                  /设置参数/

              MOV      R1,#3                    

              ADD       R0,R0,R1              /R0=R0+R1/

.stop              MOV      R0,#0x18

              LDR       R1,=0x20026

              SWI        0x123456

.END                                                /文件的结束标志/

凌阳教育,专注嵌入式人才培养多年,完善的培养方案,强大的师资,合理的课程安排,成功从小白蜕变为嵌入式工程师。想了解凌阳教育,或者获得更多嵌入式学习资料的免费下载,请点击www.sunplusedu.com访问凌阳教育官网

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条


小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-1-10 16:33 , Processed in 0.016522 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表