| 
 
   
- 帖子
 - 120 
 - 主题
 - 79 
 - 精华
 - 0 
 - 积分
 - 60 
 - 在线时间
 - 5 小时 
 - 注册时间
 - 2010-10-13 
 
  | 
- //<asm.h>
 
 - #ifdef ASM
 
 - unsigned long shiftR1(register unsigned long);
 
 - #else
 
 - extern unsigned long shiftR1(register unsigned long);
 
 - #endif
 
 - //end of asm.h 
 
 -  
 
  
- //<asm.c>
 
 - #define ASM
 
 - #include <asm.h>
 
 - #include <reg52.h>
 
 - #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
 
  复制代码 
将此源文件加入要编译的工程文件, 
将光标指向此文件,选择右键菜单“option for file 'asm.c'”, 
将属性单“properties”中的“Generate Assembler SRC File”“Assemble SRC File” 
两项设置成黑体的“√”将“Link Public Only”的“√”去掉,再编译即可。 
用此方法可以在c源代码的任意位置用#pragma asm和#pragma endasm嵌入汇编语句。 
但要注意的是在直接使用形参时要小心,在不同的优化级别下产生的汇编代码有所不同, 
可以察看对应的.lst文件看一看,得到正确的优化级别后,#pragma OT(x,speed)锁定 
优化级别(这里的值是0-9)。 |   
 
 
 
 |