C/C++教程

Keil下STM32的c语言和汇编语言的混合编程

本文主要是介绍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语言和汇编语言的混合编程的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!