新聞中心

c51中嵌套匯編的方法

作者: 時(shí)間:2016-11-18 來(lái)源:網(wǎng)絡(luò) 收藏
怎么樣在c程序中使用匯編編程

方法一:在每個(gè)匯編語(yǔ)句前加asm即可。如

本文引用地址:http://butianyuan.cn/article/201611/315818.htm

voidreset_data(void)

{

asmmovr0,#0dfh

asmdo_resetdata:

asmmov@r0,#00h

asmdjnzr0,do_resetdata

return;

}

方法二:把a(bǔ)sm作為關(guān)鍵字后續(xù)匯編用大括號(hào)括起來(lái)即可。如下:

voidreset_data(void)

{

asm

{movr0,#0dfh

do_resetdata:

mov@r0,#00h

djnzr0,do_resetdata

}

return;

}

keilc6.20c直接嵌入?yún)R編的方法

發(fā)表于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

將此源文件加入要編譯的工程文件,

將光標(biāo)指向此文件,選擇右鍵菜單“optionforfileasm.c”,

將屬性單“properties”中的“GenerateAssemblerSRCFile”“AssembleSRCFile”

兩項(xiàng)設(shè)置成黑體的“√”將“LinkPublicOnly”的“√”去掉,再編譯即可。

用此方法可以在c源代碼的任意位置用#pragmaasm和#pragmaendasm嵌入?yún)R編語(yǔ)句。

但要注意的是在直接使用形參時(shí)要小心,在不同的優(yōu)化級(jí)別下產(chǎn)生的匯編代碼有所不同,

可以察看對(duì)應(yīng)的.lst文件看一看,得到正確的優(yōu)化級(jí)別后,#pragmaOT(x,speed)鎖定

優(yōu)化級(jí)別(這里的值是0-9)。



關(guān)鍵詞: c51嵌套匯

評(píng)論


技術(shù)專(zhuān)區(qū)

關(guān)閉