原创 C中如何直接直接嵌入汇编的方法

2009-8-15 00:06 1355 4 4 分类: MCU/ 嵌入式

在学单片机...看到这个...感觉不错.发来和大家共享下...电子园51单片机学习网0i&U~c2E0|oV(K

电子园51单片机学习网[Z0K;je-T)uXe D:b

C中如何直接直接嵌入汇编的方法!

?0J \1hc ?H44606

o2J0B;tV,n44606(C51BBS网友cuiwei)原创
jTk3ZS44606//<asm.h>电子园51单片机学习网pS9U pg
#ifdef ASM
~R9@^n44606         unsigned long shiftR1(register unsigned long);电子园51单片机学习网(G/pYle
#else    电子园51单片机学习网_A%k+I8n1|m\s
         extern unsigned long shiftR1(register unsigned long);
_4}nG!Vr44606#endif电子园51单片机学习网(ae@7Ju]"X
//end of asm.h
\TS(Q PD44606
2}4v J usXv44606//<asm.c>电子园51单片机学习网^f8KF/t
#define ASM
ERhd K44606#include <asm.h>
x@P4X|44606#include <reg52.h>电子园51单片机学习网1^ Qi[E:I
#pragma OT(4,speed)电子园51单片机学习网1q-DUsckKP&DX
unsigned long    shiftR1(register unsigned long    x)
:c"s/b'P ~ e1R0W1S44606{电子园51单片机学习网q:U e jm+{T:o yz
    #pragma asm
:C2H{T(xCj`#v44606    clr c
?2a] K.[E44606    mov a,r4电子园51单片机学习网I{%A!c7g5qh+u/u#XA
    rrc a
`F6e.J7X(d8d.M3l M _44606    mov r4,a
dZ+L z5a44606电子园51单片机学习网@`.Xv,x
    mov a,r5电子园51单片机学习网M9aX1m { l
    rrc a电子园51单片机学习网u{| [3l
    mov r5,a
^1W Mv7m%}H44606电子园51单片机学习网 ^9H6G6Mljw,H4eGPGb
    mov a,r6
h4w#B`SEEv44606    rrc a
z j.~U?2G'L]lNB#N44606    mov r6,a
5X Lc+gy;}&@ _g,T44606电子园51单片机学习网]8n&JzhL:J |*|.yW
    mov a,r7电子园51单片机学习网U'mgtTLn
    rrc a电子园51单片机学习网'c)``}{6d4s2q7f@
    mov r7,a
'[O]3z h$t)bm+^ u44606    电子园51单片机学习网1}H#z;nE-cY_T
    #pragma endasm电子园51单片机学习网iO-G? Nlo\-I
    return(x);电子园51单片机学习网(Br?8e$t}3k
}
8b w LV)Hm44606//end of asm.c
L#^w3kh7R;D2k2Q44606将此源文件加入要编译的工程文件,电子园51单片机学习网2w;A:L T0xo@H*~
将光标指向此文件,选择右键菜单“option for file 'asm.c'”,
&cy)g,T/f&l44606将属性单“properties”中的“Generate Assembler SRC File”“Assemble SRC File”电子园51单片机学习网)q~w8\,ZkFr5_
两项设置成黑体的“√”将“Link Public Only”的“√”去掉,再编译即可。电子园51单片机学习网+r+H y/tu `+D8n|\#Uh
用此方法可以在c源代码的任意位置用#pragma asm和#pragma endasm嵌入汇编语句。电子园51单片机学习网]Jx;Q0Yh*z
但要注意的是在直接使用形参时要小心,在不同的优化级别下产生的汇编代码有所不同,电子园51单片机学习网 M%]i1B-x%L
可以察看对应的.lst文件看一看,得到正确的优化级别后,#pragma OT(x,speed)锁定
-wn1ek3}6VO:~(n n44606优化级别(这里的值是0-9)。
ow5xhZ ?;`1X44606

*a;yZ&vUE}44606
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
4
关闭 站长推荐上一条 /3 下一条