// #ifdef ASM unsigned long shiftR1(register unsigned long); #else extern unsigned long shiftR1(register unsigned long); #endif //end of asm.h
// #define ASM #include #include #pragma OT(4,speed) unsigned long shiftR1(register unsigned long x) { #pragma asm clr c mov a,r4 rrc a mov r4,a
mov a,r5 rrc a mov r5,a
mov a,r6 rrc a mov r6,a
mov a,r7 rrc a mov r7,a
#pragma endasm return(x); } //end of asm.c 將此源文件加入要編譯的工程文件, 將光標(biāo)指向此文件,選擇右鍵菜單“option for file 'asm.c'”, 將屬性單“properties”中的“Generate Assembler SRC File”“Assemble SRC File” 兩項設(shè)置成黑體的“√”將“Link Public Only”的“√”去掉,再編譯即可。 用此方法可以在c源代碼的任意位置用#pragma asm和#pragma endasm嵌入?yún)R編語句。 但要注意的是在直接使用形參時要小心,在不同的優(yōu)化級別下產(chǎn)生的匯編代碼有所不同, 可以察看對應(yīng)的.lst文件看一看,得到正確的優(yōu)化級別后,#pragma OT(x,speed)鎖定 優(yōu)化級別(這里的值是0-9)。 |
|