文章目录

  • 一.伪指令
    • 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. 嵌入式开发 ---必看图书

    1.<linux驱动设备驱动开发详解> 基于linux4.0 是目前主流的 嵌入式开发用的系统 整个开发流程很详细,是嵌入式开发的入门之选,在2021年之前是没有任何图书有这么详细的教程的 ...

  2. jnz和djnz_【HC89S003F4开发板】 10汇编指令

    HC89S003F4开发板汇编指令 一.数据传递类指令 MOV.MOVC.MOVX 1.MOV,用于片内数据存储器中的数据传递指令中. 2.MOVC是与ROM之间的数据传送,而MOVX是与外部RAM数 ...

  3. ARM汇编指令(1)

    汇编语言是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言.目前在嵌入式开发.单片机开发.系统软件设计.某些快速处理.位处理.访问硬件设备等高效程序的设计方面有较多应用. ...

  4. 【嵌入式开发】 ARM 汇编 (指令分类 | 伪指令 | 协处理器访问指令)

    作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42408137  转载请著名出处 本博客相关文档下载 :  -- A ...

  5. uml+oopc嵌入式c语言开发精讲_嵌入式开发中更接近底层的汇编与C语言

    分享本文,介绍下更接近硬件底层的C语言与汇编,解释 CPU 如何执行代码. 高级语言与低级语言 学习编程其实就是学习与计算机交流的语言.因为计算机不理解人类语言,通过编译器把人类写的代码转成二进制代码 ...

  6. 嵌入式cmp指令的判断标志位_物联网技术讲解:嵌入式开发

    作为除PC端外的另一种系统,嵌入式系统应用领域极其广泛,广泛到单片机.PLC.FPGA+CPLD.ARM+Linux实际上都属于嵌入式范畴,嵌入式主要内容包括linux系统,C语言开发,数据库等. 什 ...

  7. 嵌入式工程师到底要不要学习ARM汇编指令?arm学习文章汇总

    嵌入式工程师到底要不要学习ARM汇编指令? 网上搜索这个问题,答案很多,大部分的建议是不要学汇编,只要学C语言. 而一口君作为一个十几年经验的驱动工程师,个人认为,汇编语言还是需要掌握的,想要搞精.搞 ...

  8. 【嵌入式开发】ARM 代码搬移 ( ARM 启动流程 | 代码搬移 起点 终点 | 链接地址 | 汇编代码 )

    文章目录 一. ARM 启动流程 1. 各种类型开发板启动流程 ( 1 ) 2440 开发板启动流程简介 ( ① Nand Flash 拷贝 4 KB -> SRAM 垫脚石 | ② PC 指向 ...

  9. 什么是嵌入式开发?初学者必看嵌入式学习课程

    嵌入式技术是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能.可靠性.成本.体积.功耗有严格要求的专用计算机系统技术.它最初起源于单片机技术, 是各类数字化的电子.机电产品的核 ...

最新文章

  1. hibernate -- 分页模糊查询中setParameter 和setParameterList
  2. zookeeper 客户端_zookeeper进阶-客户端源码详解
  3. LINUX 下面SQL定时备份
  4. spring-aop相关概念
  5. 【SICP练习】3 练习1.7
  6. 工程师和科学家有什么区别
  7. input上传文件个数控制
  8. Mybatis使用的9种设计模式,真是太有用了
  9. 华为鸿蒙战略泄天机,谷歌最强Fuchsia OS进入狗粮测试,华为害怕?鸿蒙战略超乎你想象...
  10. matlab norm函数使用_「matlabnorm」matlab中norm函数的用法 - 金橙教程网
  11. 基于Android的办公自动化系统APP设计与实现
  12. 微信小程序:二维码生成器,输入信息生成二维码,调用相机扫描二维码,获取信息
  13. Java后端验证苹果登录
  14. macunity日志目录_Mac升级10.13需谨慎,Unity不显示资源的解决办法
  15. excel 重复方差分析_如何在Excel中运行方差方差分析的两种方法
  16. mysql 连续七天不登录_使用MySQL窗口函数巧妙的解决用户连续登录天数等问题
  17. 解决Plugin ‘xxx‘ is incompatible with this installation的问题
  18. MFC之位图加载10
  19. 【机器人制作入门】 ① 自制机器人的架构
  20. win10查看文件的前n行和后n行

热门文章

  1. ABAQUS学习(1):打开求解好的cae文件并查看云图
  2. 行为识别(三):创建C3D网络模型用于行为识别
  3. 一套TSN管理软件,可对TSN流量进行规划
  4. 如何保障域名在微信的正常访问 避免推广的域名链接在微信被拦截
  5. 国内有哪些量化交易平台?
  6. 小程序video标签在(华为手机)无法播放.mp4长视频(ios上正常)
  7. 10.15 杨秀建Model Predictive Control of Transitional Maneuvers for Adaptive Cruise Control Vehicles
  8. 由spark.sql.shuffle.partitions混洗分区浅谈下spark的分区
  9. mongoDB——安装和启动
  10. 在阿里云备案成功网站域名可以使用腾讯云服务器吗?恐怕不行