C51写单片机程序如何插入汇编指令.

是不是还必须先定义一个头文件.

指令怎么插入的.?

C51些单片机程序插入汇编指令的方法如下:

1、以#pragma asm开始,以#pragma endasm结束,

用pragma asm和#pragma endasm这两个伪指令将汇编代码包起来。

比如:

2、但是如果直接这样嵌入汇编代码的时候,编译时会报错,错误代码是:

'asm/endasm' requires src-control to be active

解决办法是:在工程中,按如图所示操作。

3、如果勾选椭圆圈中的两项,这样就可以了。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-05-07
不需要头文件的,需要加入汇编预处理指令。
第2个回答  推荐于2016-02-01
大哥人家问的是 嵌入汇编

需要打开SRC:
一、右键单击源程序文件,选择“Options for ...”
二、选择“Properties”选项卡
三、在右侧,选中这两个选项“Generate Assembler SRC File”和“Assemble SRC File”。如果这两个选项前面的复选框是灰色的,重新选择一下就可以了。

#pragma asm
NOP
#pragma endasm

就可以了本回答被提问者采纳
第3个回答  2008-05-07
在keil C51中,部分指令的插入可以直接调用库函数:
#include<intrins.h> // 其中包含了对部分汇编指令的调用申明
调用方式如下:
_nop_(); // 产生一条NOP指令
_push_(acc); // 产生一条push指令

而其他的指令的插入就得采取其他的办法了。

以下是intrins.h的内容
/*--------------------------------------------------------------------------
INTRINS.H

Intrinsic functions for C51.
Copyright (c) 1988-2004 Keil Elektronik GmbH and Keil Software, Inc.
All rights reserved.
--------------------------------------------------------------------------*/

#ifndef __INTRINS_H__
#define __INTRINS_H__

extern void _nop_ (void);
extern bit _testbit_ (bit);
extern unsigned char _cror_ (unsigned char, unsigned char);
extern unsigned int _iror_ (unsigned int, unsigned char);
extern unsigned long _lror_ (unsigned long, unsigned char);
extern unsigned char _crol_ (unsigned char, unsigned char);
extern unsigned int _irol_ (unsigned int, unsigned char);
extern unsigned long _lrol_ (unsigned long, unsigned char);
extern unsigned char _chkfloat_(float);
extern void _push_ (unsigned char _sfr);
extern void _pop_ (unsigned char _sfr);

#endif

参考资料:http://hi.baidu.com/dianzix/blog/item/6839eb2deaa66031349bf796.html

相似回答