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

创建新工程:

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

 

建立新工程后,添加一项新项目(New item)。点击第一项C File(.c),因为是写main函数(main.c)。

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

 勾选如下:Keil下STM32的c语言和汇编语言的混合编程

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

在新创建的main.c函数中写入如下程序:Keil下STM32的c语言和汇编语言的混合编程

 再添加一项新项目,不过这次选择Asm File(.s)项,因为写Func.s函数,写入汇编语言Keil下STM32的c语言和汇编语言的混合编程

 在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。

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

 然后点击左上角构建,正常情况下应如下图所示

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

然后点击魔法棒,为了之后的调试再修改几项设置。

将“Create HEX File”一项打勾:

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

将“Use Simulator”一项打勾,并且修改Diglog DLL和Parameter如下图所示:

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

 然后点击调试按钮,进入调试页面:

观测左侧寄存器,R1和R2的初始状态都是0;

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

 然后点击单步运行,一边点击一边观察。Keil下STM32的c语言和汇编语言的混合编程

 发现,R1和R2的最终值固定在十六进制的A,相当于十进制的11。与预先估计值相同。Keil下STM32的c语言和汇编语言的混合编程

 

 

 

 

上一篇:Python rang()函数


下一篇:Keil下STM32的C与汇编语言混合编程