C語言中調(diào)用匯編語言詳解
1.建立新工程
首先點擊Project里面的 New uVision Project
然后輸入文件名,點擊保存即可。
在你命名的project中創(chuàng)造一個匯編程序與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
然后進行設(shè)置,點擊Debug,勾選Use Simulator,將dialog dll下改為DARMSTM.dll ,將parameter下改為-pSTM32F103ve
注意:parameter中的調(diào)試型號要與最初選擇的芯片一致


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


3.總結(jié)
通過這次實驗,我熟悉了keil5下匯編語言和C語言的混用,既能在C語言里面調(diào)用匯編程序,也能在匯編程序里面調(diào)用C函數(shù),也更加清楚地了解了寄存器的原理。
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
C++實現(xiàn)LeetCode(116.每個節(jié)點的右向指針)
這篇文章主要介紹了C++實現(xiàn)LeetCode(116.每個節(jié)點的右向指針),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下2021-07-07
Linux系統(tǒng)下C語言中的標(biāo)準(zhǔn)IO總結(jié)
最近用到了C語言的標(biāo)準(zhǔn)IO庫,由于對其中的一些細節(jié)不是非常清楚,導(dǎo)致了許多Bug,花了好長時間來調(diào)試,所以在此做個筆記,這篇文章主要給大家介紹了關(guān)于Linux系統(tǒng)下C語言中標(biāo)準(zhǔn)IO的相關(guān)資料,需要的朋友可以參考下2024-01-01
C++/Php/Python 語言執(zhí)行shell命令的方法(推薦)
下面小編就為大家?guī)硪黄狢++/Php/Python 語言執(zhí)行shell命令的方法(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-03-03
C語言實現(xiàn)簡單學(xué)生選課管理系統(tǒng)
這篇文章主要為大家詳細介紹了C語言實現(xiàn)簡單學(xué)生選課管理系統(tǒng),具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-02-02
Windows環(huán)境給FFmpeg集成AVS3解碼器
libuavs3d是AVS3標(biāo)準(zhǔn)的解碼器,支持windows/linux/arm/ios等所有常用平臺,在移動端最高支持4K/30fps視頻實時解碼,解碼速度大幅領(lǐng)先AV1開源解碼器dav1d和aomdec,由于FFmpeg默認未啟用libuavs3d,因此需要重新配置FFmpeg,標(biāo)明啟用libuavs3d,然后重新編譯安裝FFmpeg2024-05-05
C語言中設(shè)置用戶識別碼的相關(guān)函數(shù)的簡單講解
這篇文章主要介紹了C語言中設(shè)置用戶識別碼的相關(guān)函數(shù)的簡單講解,包括setuid()函數(shù)和setreuid()函數(shù)以及setfsuid()函數(shù),需要的朋友可以參考下2015-08-08

