汇编环境搭建 【基于KEIL】

前言

学习东西还是要学习底层,学了这么久STM32,一直都是通过操纵库文件去控制的,一直有种"不求甚解"的感觉。之前看过王爽落实的《汇编语言》(基于8086的汇编),觉得写的很好,一直没有机会试试(因为不会搭建ARM汇编的仿真环境),折腾了好久终于搭建起了环境来试一试,记录一下以免后面忘记。

参考文章:https://blog.csdn.net/qq_38113006/article/details/112062705

环境搭建

创建工程

新建工程选择一款STF1系列的单片机。

然后创建一个汇编文件.s,添加进来。

找个STM32的工程 将启动文件的内容复制过来

这个时候会有两个报错,是因为我们的外部没有声明这两个函数,我们屏蔽掉就好了。

再次编译报错解决。可以开始进行汇编代码的练习了。

STM32F103启动流程

我们可以再次来回顾一下STM32的汇编启动流程。

STM32一开始启动的时候需要建立中断向量表,如下所示。

这是一张官方文档的向量表图

这是汇编启动建立向量表的过程,DCD表示分配一个字的内存,并进行初始值赋值。因为第一个是放置栈顶的地址所以我们初始化的时候也可以手动设置栈的大小。

EQU相当于我们C语言中的Define,是用来定义一个常量的,使用SPACE 是用来分配内存而不进行初始化。

通过了解中断向量表的内容可以知道,Reset中断是上电后第一个被触发的,所以汇编会跳转到Rest_Handler这个函数当中,ST的库给他写好了系统初始化函数,系统初始化完了之后就可以跳转到我们的main函数当中去。

以上大概是整个启动流程,说的比较简陋,网上也有很多介绍。

相关推荐
myloveasuka13 小时前
寻址方式笔记
汇编·笔记·计算机组成原理
请输入蚊子15 小时前
《操作系统真象还原》 第六章 完善内核
linux·汇编·操作系统·bochs·操作系统真像还原
myloveasuka16 小时前
指令格式举例
汇编·笔记·计算机组成原理
我在人间贩卖青春1 天前
汇编之分支跳转指令
汇编·arm·分支跳转
我在人间贩卖青春1 天前
汇编之加载存储指令
汇编·arm·寄存器加载存储
我在人间贩卖青春1 天前
汇编之状态寄存器访问指令
汇编·arm·状态寄存器
我在人间贩卖青春1 天前
汇编之软中断指令和协处理指令
汇编·arm·软中断·协处理
我在人间贩卖青春2 天前
汇编之数据处理指令
汇编·arm·数据处理指令
白太岁3 天前
操作系统开发:(11) RTOS 与 GPOS 的分界线:MMU
c语言·开发语言·汇编·arm开发·系统架构
枷锁—sha3 天前
【pwn系列】Pwndbg 汇编调试实操教程
网络·汇编·笔记·安全·网络安全