新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > c51中嵌套匯編的方法

c51中嵌套匯編的方法

作者: 時間:2016-11-18 來源:網絡 收藏
怎么樣在c程序中使用匯編編程

方法一:在每個匯編語句前加asm即可。如

本文引用地址:http://2s4d.com/article/201611/315818.htm

voidreset_data(void)

{

asmmovr0,#0dfh

asmdo_resetdata:

asmmov@r0,#00h

asmdjnzr0,do_resetdata

return;

}

方法二:把asm作為關鍵字后續(xù)匯編用大括號括起來即可。如下:

voidreset_data(void)

{

asm

{movr0,#0dfh

do_resetdata:

mov@r0,#00h

djnzr0,do_resetdata

}

return;

}

keilc6.20c直接嵌入匯編的方法

發(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

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

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

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

兩項設置成黑體的“√”將“LinkPublicOnly”的“√”去掉,再編譯即可。

用此方法可以在c源代碼的任意位置用#pragmaasm和#pragmaendasm嵌入匯編語句。

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

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

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



關鍵詞: c51嵌套匯

評論


技術專區(qū)

關閉