C語(yǔ)言中調(diào)用匯編語(yǔ)言詳解
1.建立新工程
首先點(diǎn)擊Project里面的 New uVision Project
然后輸入文件名,點(diǎn)擊保存即可。
在你命名的project中創(chuàng)造一個(gè)匯編程序與c程序
c程序
#include<stdio.h>
extern void Init_1(void);
int main()
{
Init_1();
return 0;
}
匯編程序
AREA My_Function,CODE,READONLY
EXPORT Init_1
Init_1
MOV R1,#0
MOV R2,#0
LOOP
CMP R1,#10
BHS LOOP_END
ADD R2,#1
ADD R1,#1
B LOOP
LOOP_END
NOP
END
然后進(jìn)行設(shè)置,點(diǎn)擊Debug,勾選Use Simulator,將dialog dll下改為DARMSTM.dll ,將parameter下改為-pSTM32F103ve
注意:parameter中的調(diào)試型號(hào)要與最初選擇的芯片一致


2.改寫(xiě)程序
c語(yǔ)言
#include<stdio.h>
extern int Init_1();
int Init_1()
{
int x=5;
return x+100;
}
匯編語(yǔ)言
IMPORT Init_1
AREA MYCODE, CODE
EXPORT __main
__main
BL Init_1
END
解釋:這里的IMPORT Init_1 表示匯編程序里面進(jìn)口或引入C里面的函數(shù)Init_1。
結(jié)果


3.總結(jié)
通過(guò)這次實(shí)驗(yàn),我熟悉了keil5下匯編語(yǔ)言和C語(yǔ)言的混用,既能在C語(yǔ)言里面調(diào)用匯編程序,也能在匯編程序里面調(diào)用C函數(shù),也更加清楚地了解了寄存器的原理。
本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
C++?解決求兩個(gè)鏈表的第一個(gè)公共結(jié)點(diǎn)問(wèn)題
本文主要介紹了利用C++實(shí)現(xiàn)輸入兩個(gè)無(wú)環(huán)的單向鏈表時(shí),找出它們的第一個(gè)公共結(jié)點(diǎn)的問(wèn)題。文章中的示例代碼簡(jiǎn)潔易懂,感興趣的同學(xué)可以和小編一起學(xué)習(xí)一下2021-12-12
C++中繼承與多態(tài)的基礎(chǔ)虛函數(shù)類詳解
這篇文章主要給大家介紹了關(guān)于C++中繼承與多態(tài)的基礎(chǔ)虛函數(shù)類的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-09-09
C語(yǔ)言代碼實(shí)現(xiàn)簡(jiǎn)單掃雷小游戲
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)掃雷游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-01-01
C/C++利用棧和隊(duì)列實(shí)現(xiàn)停車(chē)場(chǎng)管理系統(tǒng)
數(shù)據(jù)結(jié)構(gòu)的課程設(shè)計(jì)一般都不是很好理解,今天小編為大家總結(jié)了一下c和c++版本的常見(jiàn)棧和隊(duì)列的的停車(chē)場(chǎng)管理程序,需要的小伙伴可以參考一下2022-06-06

