安装方法这里不再说明,懂得都懂!
在Keil MDK5之后,不再原生支持ARM7/9,需要自行安装软件包,链接在这,注意安装与自己MDK版本对应的那个包
我的版本是5.18,下载之后傻瓜式安装,因为它会自动检测你MDK所在的位置。
注意:选择硬件时,下拉找到Legacy Device Database [no RTE]!!!,接着选择具体型号。
然后:
一定要点否!!!
否则后面会多很多事
点开魔术棒,设置如下:
下面是一个C语言与汇编语言相互调用的一个例子
asse2.s
;/*
; * 汇编语言编写实验
; * 该程序演示 C 语言和汇编语言的相互调用方法
; */
IMPORT Main ; The main entry of mon program
EXPORT asse_add
AREA Init, CODE, READONLY ; name this block of code
num EQU 20
;/*
; * 程序入口地址,传递参数并设置堆栈
; */
ENTRY ; mark the first instruction to call
_start
MOV sp, #0x33000000 ;/*建立栈指针(r13)*/
B Main ;/*跳转到 C 语言程序*/
B _start ;/*死循环,Main 程序执行完成后将重新运行Main 函数,永远不退出*/
;/*
; * int asse_add(int x, int y);
; */
asse_add
ADD r0, r0, r1 ;/*r0 = r0 + r1*/
MOV pc, lr ;/*函数返回*/
END
main.c:
/*
* C 语言演示程序
*/
extern int asse_add(int x, int y);
int embed_add(int x, int y);
void Main()
{
int x, y;
/*调用汇编函数 asse_add*/
x = asse_add(10, 20);
y = embed_add(10, 20);
}
int embed_add(int x, int y)
{
int tmp;
__asm
{
add tmp, x, y
}
;
return tmp;
}
可以正常调试运行: