匯編調用C程序


本程序用keil5實現。

keil4會將C程序的地址設為0x00000000,即一開始就運行C程序了,參數都還沒設置好。這個錯誤我也沒深究,因為我自己裝的是keil5.

 

首先需要在匯編代碼中給C程序指定參數。如果函數需要4個及4個以下的參數的話,那么把我們需要的參數分別賦值在R0~R3這4個寄存器中即可。

如果多於4個參數,那么既要在堆棧中放入參數了。

設定好sp即堆棧指針的地址,c函數會在該堆棧中取第4個以后的參數。

 

調用C函數時,C文件不需要聲明什么,就是普通的C即可。而匯編要在前面IMPORT 函數名

 

C語言代碼:

int SUM(int result,int a,int b,int c,int d,int e,int f){
    
    
    return result = a+b+c+d+e+f;
    
    
}

 

匯編代碼:

        AREA    EXAMPLE,CODE,READONLY
        IMPORT     SUM
        PRESERVE8
        ENTRY
        
ARM        
        MOV R0,#0;result
        MOV R1,#1;a
        MOV R2,#2;b
        MOV R3,#3;c
        
        LDR SP,=0X40001000
        MOV R4,#4;d
        MOV R5,#5;e
        MOV R6,#6;f
        
        STMFD SP!,{R4,R5,R6};
        
        BL SUM;調用C
        
        END

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM