返回列表 发帖

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)。

返回列表

最新关注 关闭


关于论坛注册,最新修改,请网友们注意

由于最近大量垃圾信息出现在我们的论坛,为了营造一个良好的氛围,目前论坛只开发邀请注册,你可以点击以下链接自动邀请注册(如果有人使用了点击下一个试一试) ...


查看
珩源工控论坛热诚欢迎您联系我们进行合作!

Powered by Discuz! 7.2© 2001-2009 Comsenz Inc.

珩源工控论坛 ( 桂ICP备19004328号) |论坛统计|WAP| 客服中心-www.hymcu.com
  

GMT+8, 2024-11-24 19:06, Processed in 1.088329 second(s), 5 queries, Gzip enabled.