Board logo

标题: keil c6.20c 直接嵌入汇编的方法 [打印本页]

作者: leslen    时间: 2010-10-17 15:53     标题: keil c6.20c 直接嵌入汇编的方法

  1. //<asm.h>
  2. #ifdef ASM
  3. unsigned long shiftR1(register unsigned long);
  4. #else
  5. extern unsigned long shiftR1(register unsigned long);
  6. #endif
  7. //end of asm.h
  8.  

  9. //<asm.c>
  10. #define ASM
  11. #include <asm.h>
  12. #include <reg52.h>
  13. #pragma OT(4,speed)
  14. unsigned long shiftR1(register unsigned long x)
  15. {
  16. #pragma asm
  17. clr c
  18. mov a,r4
  19. rrc a
  20. mov r4,a

  21. mov a,r5
  22. rrc a
  23. mov r5,a

  24. mov a,r6
  25. rrc a
  26. mov r6,a

  27. mov a,r7
  28. rrc a
  29. mov r7,a

  30. #pragma endasm
  31. return(x);
  32. }
  33. //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)。




欢迎光临 珩源工控论坛 (http://bbs.hymcu.com/) Powered by Discuz! 7.2