c51中嵌套匯編的方法
方法一:在每個(gè)匯編語(yǔ)句前加asm即可。如
本文引用地址:http://m.butianyuan.cn/article/201611/315818.htmvoidreset_da
{
asmmovr0,#0dfh
asmdo_resetdata:
asmmov@r0,#00h
asmdjnzr0,do_resetdata
return;
}
方法二:把a(bǔ)sm作為關(guān)鍵字后續(xù)匯編用大括號(hào)括起來(lái)即可。如下:
voidreset_da
{
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è)置成黑體的“√”將“LinkPublicOn
用此方法可以在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)。
評(píng)論