嵌入式开发必会之汇编指令
文章目录
- 一.伪指令
- 1.AREA
- 2.EQU
- 3.SPACE
- 4.PRESERVE8
- 5.DCD
- 6.BLX
- 7.BX
一.伪指令
伪指令(Pseudo Instruction)是用于对汇编过程进行控制的指令,该类指令并不是可执行指令,没有机器代码,只用于汇编过程中为汇编程序提供汇编信息。例如,提供如下信息:哪些是指令、哪些是数据及数据的字长、程序的起始地址和结束地址等。伪指令有2个特点:
(1)由于是伪**“指令”**,因而它只存在于汇编语言中。高级语言中不叫指令,叫语句;
(2)由于是**“伪”**指令,也即“假”指令,因而不是可执行指令,不会产生机器代码,不会占用ROM空间,只用于汇编过程中为汇编程序提供汇编信息。
1.AREA
AREA STACK, NOINIT, READWRITE, ALIGN=3
@开辟一段数据空间可读可写,段名 STACK,按照 8 字节对齐。
2.EQU
EQU 是表示宏定义的伪指令,类似于 C 语言中的#define。伪指令的意思是指这个“指令”并
不会生成二进制程序代码,也不会引起变量空间分配。
Stack_Size EQU 0x00000400 @宏定义
3.SPACE
SPACE 伪指令用于分配一片连续的存储区域并初始化为 0 。其中,表达式为要分配的字节数。
SPACE 也可用 “ % ” 代替。
语法格式: 标号 SPACE 表达式
DataSpace SPACE 100 @分配连续 100 字节的存储单元并初始化为 0
4.PRESERVE8
指定当前文件保持堆栈八字节对齐。
5.DCD
DCD (或 DCDU )伪指令用于分配四个字节(一个字)的内存块并用伪指令中指定的表达式初始化。其中, 表达式可以为程序标号或数字表达式。 DCD 也可用 “ & ” 代替。
语法格式: 标号 DCD (或 DCDU ) 表达式
用 DCD 分配的字存储单元是字对齐的,而用 DCDU 分配的字存储单元并不严格字对齐。
DCD Reset_Handler;@分配一个字存储单元并初始化按Reset_Handler初始化。
6.BLX
BLX 指令从ARM 指令集跳转到指令中所指定的目标地址,并将处理器的工作状态有ARM 状态切换到 Thumb 状态,该指令同时将PC 的当前内容保存到寄存器R14 中。因此,当子程序使用Thumb 指令集,而调用者使用ARM 指令集时,可以通过BLX 指令实现子程序的调用和处理器工作状态的切换。同时,子程序的返回可以通过将寄存器R14 值复制到PC 中来完成。
BLX 指令的格式为:BLX 目标地址
7.BX
BX 指令跳转到指令中所指定的目标地址,目标地址处的指令既可以是ARM 指令,也可以是Thumb指令。
BX 指令的格式为:BX{条件} 目标地址
所指定的目标地址,目标地址处的指令既可以是ARM 指令,也可以是Thumb指令。
BX 指令的格式为:BX{条件} 目标地址
嵌入式开发必会之汇编指令相关推荐
- 嵌入式开发 ---必看图书
1.<linux驱动设备驱动开发详解> 基于linux4.0 是目前主流的 嵌入式开发用的系统 整个开发流程很详细,是嵌入式开发的入门之选,在2021年之前是没有任何图书有这么详细的教程的 ...
- jnz和djnz_【HC89S003F4开发板】 10汇编指令
HC89S003F4开发板汇编指令 一.数据传递类指令 MOV.MOVC.MOVX 1.MOV,用于片内数据存储器中的数据传递指令中. 2.MOVC是与ROM之间的数据传送,而MOVX是与外部RAM数 ...
- ARM汇编指令(1)
汇编语言是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言.目前在嵌入式开发.单片机开发.系统软件设计.某些快速处理.位处理.访问硬件设备等高效程序的设计方面有较多应用. ...
- 【嵌入式开发】 ARM 汇编 (指令分类 | 伪指令 | 协处理器访问指令)
作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42408137 转载请著名出处 本博客相关文档下载 : -- A ...
- uml+oopc嵌入式c语言开发精讲_嵌入式开发中更接近底层的汇编与C语言
分享本文,介绍下更接近硬件底层的C语言与汇编,解释 CPU 如何执行代码. 高级语言与低级语言 学习编程其实就是学习与计算机交流的语言.因为计算机不理解人类语言,通过编译器把人类写的代码转成二进制代码 ...
- 嵌入式cmp指令的判断标志位_物联网技术讲解:嵌入式开发
作为除PC端外的另一种系统,嵌入式系统应用领域极其广泛,广泛到单片机.PLC.FPGA+CPLD.ARM+Linux实际上都属于嵌入式范畴,嵌入式主要内容包括linux系统,C语言开发,数据库等. 什 ...
- 嵌入式工程师到底要不要学习ARM汇编指令?arm学习文章汇总
嵌入式工程师到底要不要学习ARM汇编指令? 网上搜索这个问题,答案很多,大部分的建议是不要学汇编,只要学C语言. 而一口君作为一个十几年经验的驱动工程师,个人认为,汇编语言还是需要掌握的,想要搞精.搞 ...
- 【嵌入式开发】ARM 代码搬移 ( ARM 启动流程 | 代码搬移 起点 终点 | 链接地址 | 汇编代码 )
文章目录 一. ARM 启动流程 1. 各种类型开发板启动流程 ( 1 ) 2440 开发板启动流程简介 ( ① Nand Flash 拷贝 4 KB -> SRAM 垫脚石 | ② PC 指向 ...
- 什么是嵌入式开发?初学者必看嵌入式学习课程
嵌入式技术是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能.可靠性.成本.体积.功耗有严格要求的专用计算机系统技术.它最初起源于单片机技术, 是各类数字化的电子.机电产品的核 ...
最新文章
- hibernate -- 分页模糊查询中setParameter 和setParameterList
- zookeeper 客户端_zookeeper进阶-客户端源码详解
- LINUX 下面SQL定时备份
- spring-aop相关概念
- 【SICP练习】3 练习1.7
- 工程师和科学家有什么区别
- input上传文件个数控制
- Mybatis使用的9种设计模式,真是太有用了
- 华为鸿蒙战略泄天机,谷歌最强Fuchsia OS进入狗粮测试,华为害怕?鸿蒙战略超乎你想象...
- matlab norm函数使用_「matlabnorm」matlab中norm函数的用法 - 金橙教程网
- 基于Android的办公自动化系统APP设计与实现
- 微信小程序:二维码生成器,输入信息生成二维码,调用相机扫描二维码,获取信息
- Java后端验证苹果登录
- macunity日志目录_Mac升级10.13需谨慎,Unity不显示资源的解决办法
- excel 重复方差分析_如何在Excel中运行方差方差分析的两种方法
- mysql 连续七天不登录_使用MySQL窗口函数巧妙的解决用户连续登录天数等问题
- 解决Plugin ‘xxx‘ is incompatible with this installation的问题
- MFC之位图加载10
- 【机器人制作入门】 ① 自制机器人的架构
- win10查看文件的前n行和后n行
热门文章
- ABAQUS学习(1):打开求解好的cae文件并查看云图
- 行为识别(三):创建C3D网络模型用于行为识别
- 一套TSN管理软件,可对TSN流量进行规划
- 如何保障域名在微信的正常访问 避免推广的域名链接在微信被拦截
- 国内有哪些量化交易平台?
- 小程序video标签在(华为手机)无法播放.mp4长视频(ios上正常)
- 10.15 杨秀建Model Predictive Control of Transitional Maneuvers for Adaptive Cruise Control Vehicles
- 由spark.sql.shuffle.partitions混洗分区浅谈下spark的分区
- mongoDB——安装和启动
- 在阿里云备案成功网站域名可以使用腾讯云服务器吗?恐怕不行