Keil下STM32的c语言和汇编语言的混合编程
2021/10/12 20:14:45
本文主要是介绍Keil下STM32的c语言和汇编语言的混合编程,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
创建新工程:
建立新工程后,添加一项新项目(New item)。点击第一项C File(.c),因为是写main函数(main.c)。
勾选如下:
在新创建的main.c函数中写入如下程序:
再添加一项新项目,不过这次选择Asm File(.s)项,因为写Func.s函数,写入汇编语言
在Func.s函数中写入如下汇编语言:
AREA My_Function,CODE,READONLY
EXPORT Init_1
Init_1
MOV R1,#0 ;设R1寄存器是i
MOV R2,#0 ;设R2寄存器是j
LOOP ;写在最左边的是程序名的段名,执行跳转程序时要用到
CMP R1,#10 ;比较R1和10的大小
BHS LOOP_END ;如果R1大于或等于10.则跳转到LOOP_END程序段
ADD R2,#1 ;j++
ADD R1,#1 ;i++
B LOOP ;执行一次循环后,无条件再次进入循环判断,即是跳转到LOOP段
LOOP_END
NOP
END
汇编程序如上,观测程序,程序结束时R1和R2的值应是十进制的11。
然后点击左上角构建,正常情况下应如下图所示
然后点击魔法棒,为了之后的调试再修改几项设置。
将“Create HEX File”一项打勾:
将“Use Simulator”一项打勾,并且修改Diglog DLL和Parameter如下图所示:
然后点击调试按钮,进入调试页面:
观测左侧寄存器,R1和R2的初始状态都是0;
然后点击单步运行,一边点击一边观察。
发现,R1和R2的最终值固定在十六进制的A,相当于十进制的11。与预先估计值相同。
这篇关于Keil下STM32的c语言和汇编语言的混合编程的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-07-05feign默认connecttimeout和readtimeout是多少-icode9专业技术文章分享
- 2024-07-05idea控制台,日志太多,导致部分想看得日志被刷走 搜不到-icode9专业技术文章分享
- 2024-07-05The server selected protocol version Tls10 is not accepted by client preferences [TLs12]-icode9专业技术文章分享
- 2024-07-05怎么清理项目缓存-icode9专业技术文章分享
- 2024-07-04安装 Eyoucms详细图文教程-icode9专业技术文章分享
- 2024-07-04ueditor 复制文章时,图片的链接是一个下载图片地址,该如何处理?-icode9专业技术文章分享
- 2024-07-04怎样判断host有没有对wordpress有缓存呢-icode9专业技术文章分享
- 2024-07-04具有编译功能的系统make后,无法ssh连接-icode9专业技术文章分享
- 2024-07-04make后如何升级ssh-icode9专业技术文章分享
- 2024-07-03微信支付提示下单账户与支付账户不一致-icode9专业技术文章分享