嵌入式(4)ARM汇编

ARM伪指令

在这里插入图片描述

G全是全局变量
L全是局部变量
S为赋值
R为列表

  • GBLA表示初始化为0
  • GBLL表示初始化为F
  • GBLS表示初始化为空
    在这里插入图片描述
  • LCLA 初始化0
  • LCLL 初始化F
  • LCLS 初始化为空

在这里插入图片描述

  • SETA 数值赋值
  • SETL 逻辑赋值
  • SETS 字符串变量

在这里插入图片描述

STMFD. 堆栈段存储
LDMIA 寄存器加载

数据定义伪指令

在这里插入图片描述

  • DCB 表达式 为表达式初始化 可以用=
  • DCW 存储半字空间
  • DCD 存储字空间 &

str DCB “我是你哥哥”

a DCW 1,2,3

b DCD 4,5,6

  • DCFD 双精度浮点数
  • DCFS 单精度浮点数
  • SPACE 分配一片连续的存储区域初始化为0 ,可用%替代

eg:

asd SPACE 100;//分配连续的地址空间初始化为0
  • MAP 定义内存表首地址 可用^代替
    eg:
MAP 0X100 R0 //定义0X100+R0为内存表首地址
  • FIELD 定义结构化内存空间,常与MAP配合使用
    MAP与FIELD仅用于定义数据结构,不实际分配单元

在这里插入图片描述在这里插入图片描述

  • if
 if	逻辑表达式
 	指令序列
 else
 	指令序列2
 endif
  • while
while 逻辑表达式
指令序列
wend

if/while都需要有结束语句

  • area 段名 属性1 ,属性2

用于定义一个代码段,数据段,或属性段

在这里插入图片描述

  • ALIGN [ 表达式【,偏移量】 ]
    填充字符,让其对其
  • code 32 16 /分别表示ARM,thumb指令集
  • entry 汇编程序入口
  • end 程序出口
  • EQU,定义,类似于C语言的#define
  • 在这里插入图片描述
  • export/import
    这两个就是类似于java一个定义一个类,一个引用一个类
  • get/include
    在这里插入图片描述
  • 名称 RN 别名
temp Rn,R0
将R0定义为temp别名

顺序程序例子

在这里插入图片描述

分支程序设计

分支程序转移B,子程序调用BL,带状态转移指令BX
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

循环程序设计

在这里插入图片描述

在这里插入图片描述

**加粗样式**

别让我编写,秋梨膏。让我读程序

在这里插入图片描述

在这里插入图片描述

子程序

就是函数把,我感觉

在这里插入图片描述
调用使用BL
子程序结尾处用MOV PC,LR返回主程序

在这里插入图片描述
三种传参
在这里插入图片描述后面不学了,就这样把

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值