微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > c51中嵌套汇编的方法

c51中嵌套汇编的方法

时间:11-18 来源:互联网 点击:
怎么样在c程序中使用汇编编程

方法一:在每个汇编语句前加asm即可。如

voidreset_data(void)

{

asmmovr0,#0dfh

asmdo_resetdata:

asmmov@r0,#00h

asmdjnzr0,do_resetdata

return;

}

方法二:把asm作为关键字后续汇编用大括号括起来即可。如下:

voidreset_data(void)

{

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”

两项设置成黑体的“√”将“LinkPublicOnly”的“√”去掉,再编译即可。

用此方法可以在c源代码的任意位置用#pragmaasm和#pragmaendasm嵌入汇编语句。

但要注意的是在直接使用形参时要小心,在不同的优化级别下产生的汇编代码有所不同,

可以察看对应的.lst文件看一看,得到正确的优化级别后,#pragmaOT(x,speed)锁定

优化级别(这里的值是0-9)。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top