这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » 想在C中嵌入段汇编

共2条 1/1 1 跳转至

想在C中嵌入段汇编

院士
2006-09-17 18:14:16     打赏
想在C中嵌入段汇编



关键词: 想在     嵌入     段汇编     汇编    

院士
2006-12-22 22:43:00     打赏
2楼
问 想在C中嵌入段汇编,是不是如下:

while(1)
{
start:

#pragma ASM

.....JB P3.2, start;(能到start那里吗?)

#pragma ENDASM
  
1: 编译不过!可是问题是,当我用伟福的编译器编译完后,提示:
'asm/endasm' requires src-control to be active(要求源码控制被激活?什么意思?)
是不是在源码的开头加上什么参数的
2: 后来后来在源文件头加上
#pragma SRC
编译还是提示错,好像是文件或路径找不到.OBJ文件找不到!请教! 3: 要加入以下控制#pragma src(abc.asm)
就可以通过编译了。最后你要用abc.asm这个文件。 4: 看一下这个例程吧.//<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)。

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]