找回密码
 注册
关于网站域名变更的通知
查看: 565|回复: 2
打印 上一主题 下一主题

如何实现c51和asm的混编

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2018-12-7 13:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
如何实现c51和asm的混编, W. l/ _6 R8 d# |0 Z
& p" }6 ]5 I9 p$ C; j0 l$ ]' \
这是我在编程中积累的经验,希望对大家有用!
如何实现C51和汇编的混合编程+ q& A& m* v0 k( ^+ ^# c
(文中用到的编译器一律为keil)
7 b& o  d% ~1 o; R1、首先来个范例,并从这个范例展开说明:
, {& z" A/ _+ _% ^+ L, z9 X............       //C51 Code here
* Z5 x) b; @; a6 C+ y#pragma ASM2 g4 I8 p4 Y) L6 O. ^7 p" C
.............     //Here is the Assembler Code
, J0 G5 c0 d2 R% s/ d& K#pragma ENDASM) \4 }" F: E; F4 F) b4 k. l2 k3 `
...........      //C51 Code here
2、看到范例,大家应该对实现C51和汇编的混合有个大概了解了,呵呵,
其实也就这么一回事。
6 _+ M9 Z" n6 n7 B$ t但是我们还必须要做一些前提工作,首先在Project窗口中包含汇编代码(
ASM)的C文件单击右键,选择“Options for ...”,然后点击“Generate
Assembler SRC File”和“Assemble SRC File”
3、根据选择的编译模式,把相应的库文件加入工程,应该注意的是,这个
文件必须作为该工程的最后一个文件
: T! d2 }1 P) o% C/ }4 w6 }& y
4、大家可以复制下面这个C51和汇编的混编代码练习一下,加深印象7 f- ]( m; D6 S
#i nclude <reg51.h>) `7 y6 `$ O& w! O6 N
void main(void)/ P$ e; D# y/ O; o5 d$ l
{
7 l8 J) d! R; lP2=0x00;
, T1 o! U; J6 S5 Y#pragma asm
. G9 Z- L$ j7 y; e6 k" d      MOV R7,#100 t1 l/ s$ q; F" I0 o! M9 j
#pragma endasm: p* o* g0 E9 x
P2=0xff;  E7 c- q3 m  M# }: w* N" _
}
  k; @2 T* A9 z) @; T. s4 a1 u
5、上面的过程掌握了以后,我们再来看一下如何实现无参数传递的函数调6 }; ^+ a* u) W- s3 N) O4 d% U& E

2 D0 G/ h/ W. h( M例如我们要调用一个延时函数delay()
. i% }. w( ]4 M1 |, q8 t     //C51
: B$ G3 ^  [9 [8 ^( T" Gextern void delayms();   //声明7 {0 g5 E* [& s3 D  z
int main()$ J# Y) `2 ?" m8 b9 Z8 D# h
{% f$ l% k8 k% }+ O8 E' o% \/ S
delayms();   //调用
6 l: U/ |4 \, G9 ?1 n& ]0 U, I}  i! o0 A/ i! `7 w3 I: U9 Z
% L5 K1 I* z8 b& m5 J& `- R
6、有参传递
- D4 a7 {! ~  ]1 R# Q其实是一样的,就是在子函数中加了参数罢了2 ?: }$ O2 B( N) U, ?- V
例如:int delay(int minite,int second,……)//参数可以多个

/ F8 {& X& J0 [! \

该用户从未签到

2#
发表于 2018-12-7 13:58 | 只看该作者
不错 感谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-8-4 22:03 , Processed in 0.125000 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表