基于MDK创建STM32汇编语言工程——上机实验一(9527)

1新建工程

在这里插入图片描述
1.设置工程路径
2.设置名称,用first
3.保存

2配置环境

设置工程得目标环境,STM32F103ZE,如下,保存即可
在这里插入图片描述
选择运行环境,如下
1.CMSIS下选择CORE
2.Device下选择Startup
在这里插入图片描述
添加源文件
选择Asm File (.s)
设置源文件名称
保存
如下所示
在这里插入图片描述
在这里插入图片描述
添加源代码
在这里插入图片描述

3测试代码

仿真器设置
在“Debug”选项卡中选择“Use Simulator”,表示使用软件仿真;选择“Run to main()”则表示跳过汇编代码,直接跳转到main函数开始仿真。设置下面的“Dialog DLL”项为“DARMSTM.DLL”和“TARMSTM.DLL”;parameter项为“-pSTM32F103C8”,用于设置支持STM32F103C8的软硬件仿真。如下:
在这里插入图片描述
编译调试
在这里插入图片描述
结果符合预期,寄存器R5,R6,R7,R8的值与程序设置一致
在这里插入图片描述

在这里插入图片描述

4分析生成的HEX文件

用记事本打开hex文件,是一串十六进制字符
在这里插入图片描述
1.扩展线性地址记录(hex 文件的第一排十六进制)也叫作 32 位地址记录或 HEX386 记录
这些记录包含数据地址的高 16 位,扩展线性地址记录总是有两个数据字节,外观如下
在这里插入图片描述
当一个扩展线性地址记录被读取,存储于数据域的扩展线性地址被保存,它被应用于从 Intel HEX 文件读取来的随后的记录
线性地址保持有效,直到它被另外一个扩展地址记录所改变
通过把记录当中的地址域与被移位的来自扩展线性地址记录的地址数据相加获得数据记录的绝对存储器地址
2.数据部分
Intel HEX 由任意数量的十六进制记录组成。每个记录包含 5 个域,它们按一定格式排列::llaaaatt[dd…]cc
每一组字母对应一个不同的域,每一个字母对应一个十六进制编码的数字
每一个域由至少两个十六进制编码数字组成,它们构成一个字节,就像以下描述的那样:
在这里插入图片描述
3.文件尾
在文件的最后一排,是一个文件的结束标志:
在这里插入图片描述

5总结

从最开始的软件装机,到正式实验时还没有完成stm的工作环境的安装,在老师的提醒下,开始正常实验的进行,在实验过程中还有许多不懂的地方,编译了几次,与实验结果不符,问题出在设置仿真器的模式上,在老师的指导下,终于完成本次实验,虽然过程艰辛,但是成功的喜悦更值得去体会,也了解到了编程的学习需要实践。如有错误,请斧正。

6参考文献

基于 MDK 创建 STM32 汇编语言工程并分析 HEX

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值