怎么样在c程序中运用汇编编程
办法一:在每个汇编句子前加asm即可。如
voidreset_da
{
asmmovr0,#0dfh
asmdo_resetdata:
asmmov@r0,#00h
asmdjnzr0,do_resetdata
return;
}
办法二:把asm作为关键字后续汇编用大括号括起来即可。如下:
voidreset_da
{
asm
{movr0,#0dfh
do_resetdata:
mov@r0,#00h
djnzr0,do_resetdata
}
return;
}
keilc6.20c直接嵌入汇编的办法
发表于2007-5-2418:23:17
#ifdefASM
unsignedlongshiftR1(registerunsignedlong);
#else
externunsignedlongshiftR1(registerunsignedlong);
#endif
//endofasm.h
//
#defineASM
#include
#include
#pragmaOT(4,speed)
unsignedlongshiftR1(registerunsignedlongx)
{
#pragmaasm
clrc
mova,r4
rrca
movr4,a
mova,r5
rrca
movr5,a
mova,r6
rrca
movr6,a
mova,r7
rrca
movr7,a
#pragmaendasm
return(x);
}
//endofasm.c
将此源文件参加要编译的工程文件,
将光标指向此文件,挑选右键菜单“optionforfileasm.c”,
将特点单“properties”中的“GenerateAssemblerSRCFile”“AssembleSRCFile”
两项设置成黑体的“√”将“LinkPublicOn
用此办法能够在c源代码的恣意方位用#pragmaasm和#pragmaendasm嵌入汇编句子。
但要留意的是在直接运用形参时要当心,在不同的优化等级下发生的汇编代码有所不同,
能够观察对应的.lst文件看一看,得到正确的优化等级后,#pragmaOT(x,speed)确定
优化等级(这儿的值是0-9)。