c51中嵌套汇编的方法
方法一:在每个汇编语句前加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)。
c51嵌套汇 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)