目录
二、将原汇编语言 Init_1函数的类型改为 int Init_1(init) ,此函数功能修改为 传入一个整型数x,函数运行后返回整型数 x+100
一、示例
在keil上新建c程序main.c和汇编程序fun.s
fun.s代码
main.c代码
编译结果
在C程序中调用了汇编语言程序,R1 R2会从零开始一个一个的递加,直到R1等于10结束。
二、将原汇编语言 Init_1函数的类型改为 int Init_1(init) ,此函数功能修改为 传入一个整型数x,函数运行后返回整型数 x+100
代码修改
c程序代码为
#include<stdio.h>
extern int Init_1(int);
int main()
{
int x;
x=10;
Init_1(x);
return 0;
}
汇编程序代码为
AREA test,CODE,READONLY
EXPORT Init_1
Init_1
MOV R1,#0
LOOP
CMP R1,#100
BHS LOOP_END
ADD R1,#1
B LOOP
LOOP_END
ADD R0,R1
NOP
END
编译运行
R0处显示成了6E及16进制的110,最终结果为110
三、在汇编函数中调用一个c语言写的函数
代码
#include<stdio.h>
extern int sum(int a,int b);
int sum(int a,int b)
{
int c;
a=100;
b=100;
c=a+b;
return c;
}
AREA MYDATA, DATA
IMPORT sum
AREA MYCODE, CODE
ENTRY
EXPORT __main
__main
BL sum
BX LR
END
运行结果
汇编函数调用C语言main函数,将结果200(及16进制的C8)赋给寄存器R0
四、总结
通过本次实验,学会了如何在C语言程序里调用汇编程序,以及如何在汇编程序里调用C语言程序,加深了对汇编程序和c程序的理解。