51汇编与c语言混合编程,C51与汇编混合编程详解

C51与汇编混合编程详解

0750long | 2009-07-09 12:45:42    阅读:1257

db6c9df9ccb71c554faea6ec7ad19010.png发布文章

C51与汇编混合编程详解

C51和汇编混合编程(1)-C语言中嵌入汇编

1.在 C文件中要嵌入汇编代码片以如下方式加入汇编代码:

#pragma ASM

; Assembler Code Here

#pragma ENDASM

2.在 Project窗口中包含汇编代码的 C文件上右键,选择“Options for ...”,点击右边的“Generate Assembler SRC File”

和“Assemble SRC File”,使检查框由灰色变成黑色(有效)状态;

3.根据选择的编译模式,把相应的库文件(如 Small模式时,是 Keil\C51\Lib\C51S.Lib)加入工程中,该文件必须作为工程的最

后文件;

4.编译,即可生成目标代码。

来个实例吧:

#i nclude

void main(void)

{

P2=1;

#pragma asm

MOV R7,#10

DEL:MOV R6,#20

DJNZ R6,$

DJNZ R7,DEL

#pragma endasm

P2=0;

}

C51和汇编混合编程(2)-无参数传递的函数调用

C51调用汇编函数

1.无参数传递的函数调用

先来个例子:其中example.c和example.a51为项目中的两个文件

***********************example.c***********************************************

extern void delay100();

main()

{delay100;}

***********************example.a51***********************************************

?PR?DELAY100 SEGMENT CODE; //在程序存储区中定义段

PUBLIC DELAY100; //声明函数

RSEG ?PR?DELAY100; //函数可被连接器放置在任何地方

DELAY100:

MOV R7,#10

DEL:

MOV R6,#20

DJNZ R6,$

DJNZ R7,DEL

RET

END

在example.c文件中,先声明外部函数,然后直接在main中调用即可。

在example.a51中,

?PR?DELAY100 SEGMENT CODE;作用是在程序存储区中定义段,DELAY100为段名,?PR?表示段位于程序存储区内

PUBLIC DELAY100;作用是声明函数为公共函数

RSEG ?PR?DELAY100;表示函数可被连接器放置在任何地方,RSEG是段名的属性

段名的开头为PR,是为了和C51内部命名转换兼容,命名转换规律如下:

CODE-?PR?

XDATA-?XD

DATA-?DT

BIT-?BI

PDATA-?PD

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论

请登录...

登录后参与讨论

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值