ARM汇编语言程序结构示例

发布者:mu22最新更新时间:2021-05-06 来源: eefocus关键字:ARM  汇编语言  程序结构 手机看文章 扫描二维码
随时随地手机看文章

详细介绍ARM汇编语言之前,先给出一个汇编源程序示例,使读者对ARM汇编语言程序的结构有一个大概的了解。


CODE32 ;32位的ARM指令段

AREA codesec, CODE, READONLY ;代码段,名称为codesec,属性为只读

main PROC ;函数main

STMFD sp!,{lr} ;保存必要的寄存器和返回地址到数据栈

ADR r0,strhello ;取标签strhello代表的地址值

BL _ printf ;调用C运行时库的_printf函数打印

;“Hello world!”字符串

BL welcomefun ;调用子函数welcomfun

LDMFD sp!,{pc} ;恢复寄存器值

strhello ;strhello代表本地字符串的地址

DCB "Hello world!n" ;定义一段字节空间

ENDP ;函数main结束

welcomefun ;子函数welcomfun

STMFD sp!,{lr} ;保存必要的寄存器和返回地址到数据栈

ADR r0,adrstrarm ;取adrstrarm的地址放到寄存器r0中

LDR r0,[r0,#0] ;将strarm的值放到r0中

BL _ printf ;调用C运行时库的_printf函数打印

;“Welcom to ARM world!”字符串

LDMFD sp!,{pc} ;恢复寄存器值

adrstrarm ;adrstrarm标签

DCD strarm ;保存strarm的地址

AREA constdatasec, DATA, READONLY,ALIGN=0 ;数据段,名称为constdatasec,

;属性为只读

strarm

DCB "Welcome to ARM world!n" ;存放“WelcometoARM world!”

;字符串

EXPORT main ;导出main函数供外部调用

;引入3个C运行时库函数和ARM库

IMPORT _main

IMPORT __main

IMPORT _printf

IMPORT ||Lib$$Request$$armlib||, WEAK

END ;程序结束

将上面代码保存为hello.s,Windows系统下在终端输入命令行:

armcc -g hello.s -o hello.axf

将hello.s编译成映像文件hello.axf。

运行命令:

armsd -exec hello.axf

将出现下面结果:

1 ARM7TDMI, BIU, Little endian, Semihosting, Debug Comms Channel, 4GB, Mapfile,

2 Timer, Profiler, Tube, Millisecond [20000 cycles_per_millisecond], Pagetables,

3 IntCtrl, Tracer, RDI Codesequences

4 Object program file wangt.axf

5 Hello world!

6 Welcome to ARM world!

7 Program terminated normally at PC = 0x00009f70 (_sys_exit + 0x8)

8 +0008 0x00009f70: 0xef123456 V4.. : swi 0x123456

9 Quitting


关键字:ARM  汇编语言  程序结构 引用地址:ARM汇编语言程序结构示例

上一篇:Cortex-M0的RFID读卡器电路设计方案
下一篇:基于ARM的宿舍智能安防监测系统设计

推荐阅读最新更新时间:2024-11-10 16:42

联发科推首款真八核4G芯片MT6595,基于ARM A17
    时间:2014年2月11日 21:33 联发科推首款真八核4G芯片MT6595   新浪手机讯 2月11日下午消息,移动芯片厂商联发科今日正式发布全球首款真八核4G LTE手机解决方案MT6595,该平台采用四核Cortex-A17以及四核Cortex-A7的大小核方案,官方称支持八核同时开启,并支持超高清H.265视频编解码规格。   联发科此次发布的MT6595内建四核Cortex-A17核心以及四核Cortex-A7核心,采用目前三星Exynos 5类似的big.LITTLE大小核异构多任务架构。   不过,联发科技基于ARM大小核异构多任务架构开发出CorePilot技术,动态温控和功耗管理技术可动态侦测工作负
[手机便携]
基于ARM的Arduino处理器板的蜂窝调制解调器模块设计
通过利用运营商已经建立的蜂窝基础设施,设计人员可以使用此网络而不是Wi-Fi或其他网络接口来收集数据或提供远程管理。蜂窝网络是小型到中型数据包的理想选择,可以降低大型分布式系统的硬件预算,因为每个连接到蜂窝网络的设备都不需要本地Wi-Fi热点或中继器。此外,蜂窝调制解调器具有比Wi-Fi或其他无线网络接口更长的覆盖范围(信号可以更远)。 根据您需要的数据传输速率和您所在地区的运营商,有多种蜂窝选项需要连接。现在使用的各种标准包括GSM/GPRS,CDMA2000,HSPA,EVDO/CDMA,EDGE和LTE。在某些地区,2G蜂窝服务可提供高达约40 kbits/s的低数据速率连接,以实现更快的连接,EDGE,CDMA2000
[单片机]
基于<font color='red'>ARM</font>的Arduino处理器板的蜂窝调制解调器模块设计
利用半导体压力传感器和ARM实现便携式心血管无创检测系统
目前对心血管健康状况的检测方法大多数是应用于医院的临床诊断,有的是有创伤性的,给人体带来痛苦甚至感染;有的需要专业医生操作,检测过程非常繁琐。特别是大多数心血管功能参数的检测仪器比较笨重,价格不菲,不适用于普通家庭用户的使用。 本文利用半导体压力传感器获得桡动脉处的脉搏波信号,压力传感器是工业实践中最为常用的一种传感器,其广泛应用于各种工业自控环境,涉及水利水电、铁路交通、智能建筑、生产自控、航空航天、军工、石化、油井、电力、船舶、机床、管道等众多行业,下面就简单介绍一些常用传感器原理及其应用。另有医用压力传感器。压电传感器中主要使用的压电材料包括有石英、酒石酸钾钠和磷酸二氢胺。其中石英(二氧化硅)是一种天然晶体,压电效应就是
[单片机]
利用半导体压力传感器和<font color='red'>ARM</font>实现便携式心血管无创检测系统
基于ARM与DSP的主从式双CPU嵌入式四轴运动控制器设计方案
运动控制系统已被广泛应用于工业控制领域。近年来,工业控制对运动控制系统的要求越来越高。传统的基于PC及低端微控制器日渐暴露出高成本、高消耗、低可靠等问题,已经不能满足现代制造的要求 。随着嵌入式技术的日益成熟,嵌人式运动控制器已经初露锋芒。基于ARM技术的微处理器具有体积小、低成本、低功耗的特点,决定其在运动控制领域具有良好的发展前景。 PCL6045BL是一种新型专用DSP运动控制芯片,它具有强大的数据处理能力和较高的运行速度,可以实现高精度的多轴伺服控制。为解决精密制造对低成本、可移植性强的通用型多轴数控系统的迫切需求,文中给出一种基于ARM 微处理器S3C2440与DSP专业运动控制芯片PCL6045BL构成的嵌入式四轴
[单片机]
基于<font color='red'>ARM</font>与DSP的主从式双CPU嵌入式四轴运动控制器设计方案
采用FPGA芯片实现AAL中SAR层和ATM层功能与接口设计
引言 近年来,宽带接入技术得到了飞速的发展,其中非对称用户数字线路技术(ADSL)能利 用现有的电话网络资源,具有投资少见效快等优点,成为向B - ISDN 的最佳过渡形式之一。 在ADSL系统中,由数字用户接入复用器(DSLAM)完成ATM的终结和路由,该模型分为4 层,自上而下分为高层、AAL层、ATM层和物理层,这里高层是指RFC1483及其以上各层, AAL层又分为拆分与组装子层(SAR)和汇聚子层(CS)两个子层,ATM层主要完成信元 复用/解复用、有关信元头的操作以及流控等功能,UTOPIA(ATM的通用测试和操作物理接 口)位于ATM层和物理层之间,规范ATM层和物理层之间的信号电平和时序定义,物理层 的主要任务是物
[单片机]
采用FPGA芯片实现AAL中SAR层和ATM层功能与接口设计
微软或将作出重大改变,竟利好苹果M1笔电?
近年来,PC 市场一直都不怎么景气。不过今年即便加上个疫情,也没有对整个市场带来什么影响,反倒是有所回升。此前,苹果的 ARM 版 MacBook 横空出世,其凭借软硬件的融合,实现了不同设备之间的联动互通,使得原本小众的 ARM 笔记本电脑重新走入了大众的视野。 事实上,微软之前曾推出过 ARM 版的 Windwos10,但是不堪重用,因为它只运行 32 位应用。目前,市面上大部分的软件不再推出 32 位版本的应用,基本上都是只有 64 位版本,例如谷歌的 Chrome 浏览器、Adobe 的 Creative Suite 等。 简单点来讲,就是 32 位应用正在被时代所淘汰。如果 ARM 版 Windows 只能运行
[嵌入式]
微软或将作出重大改变,竟利好苹果M1笔电?
ARM9(S3C2440) LED控制
下面为TQ2440开发板的硬件LED接口: LED控制思想 1、将相应的引脚设置为输出 2、再将相应的引脚设置为低电平 代码实现 src: inc: 2440init.s为开发板开启首先运行的代码。目的:初始化C语言环境。 ; NAME: 2440INIT.S ; DESC: C start up codes ; Configure memory, ISR ,stacks ; Initialize C-variables 。。。。。。 。。。。。。 IMPORT MMU_SetAsyncBusMode IMPORT MMU_SetF
[单片机]
如何使用Keil打开GD32 FPU及使用ARM DSP库 ?
GD32目前支持ARM Cortex-M和RISC-V两种内核系列芯片,其中Cortex-M内核已经支持的有M3、M4、M23、M33、M7,这里面除了M3和M23以外,其他的都带FPU单元。我们知道,FPU在浮点运算速度上有很大的提升,并且只有带FPU才可以使用ARM的DSP库。 现在就以GD32F303为例来教大家在keil中如何打开GD32 FPU以及使用ARM DSP库的方法。 第一步:在keil-Options-Target中设置Floating Point Hardware为Single Precision(小编用的是Keil5,用Keil4的小伙伴这里应该选为Use FPU) 第二步:工程中定义 __T
[单片机]
如何使用Keil打开GD32 FPU及使用<font color='red'>ARM</font> DSP库 ?
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved