打印

汇编里面嵌入C

[复制链接]
1392|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
司徒老鹰|  楼主 | 2013-3-5 22:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有做过的吗?
沙发
司徒老鹰|  楼主 | 2013-3-5 22:13 | 只看该作者
单片机的程序c里如何嵌入汇编啊?需要哪些注意的格式吗?
  或者汇编里如何嵌入c?需要什么样的具体格式啊?坐等高手的指点

使用特权

评论回复
板凳
chuxh| | 2013-3-5 22:17 | 只看该作者
没听说过在汇编里面嵌入C的

使用特权

评论回复
地板
chuxh| | 2013-3-5 22:17 | 只看该作者
倒是可以在keil c中嵌入汇编的

使用特权

评论回复
5
司徒老鹰|  楼主 | 2013-3-5 22:19 | 只看该作者
比如呢?

使用特权

评论回复
6
chuxh| | 2013-3-5 22:19 | 只看该作者
格式
      #pragma  ASM
         ;Assembler code here
         #pragma ENDASM

使用特权

评论回复
7
chuxh| | 2013-3-5 22:20 | 只看该作者
在Project窗口中包含汇编代码的C文件上右键,选择“Option for....” 点击右边的“Generate Assembler SRC file ” 和“Assembler SRC file”, 使检查项由灰色变成黑色(有效)。

使用特权

评论回复
8
chuxh| | 2013-3-5 22:21 | 只看该作者
把keil\C51\LIB中的C51S.lib添加到工程中来。        

编译即可生产目标代码。

使用特权

评论回复
9
zwll| | 2013-3-5 22:25 | 只看该作者
来个简单的例子呗

使用特权

评论回复
10
chuxh| | 2013-3-5 22:25 | 只看该作者
#include<reg51.h>

void sub_fun(void)

{

        P2 = 1;



        #pragme asm

        MOV R7,#10

DEL:

        MOV R6,#20

        DJNZ R6,$

        DJNZ R7,DEL

        #pragma endasm



        P2 = 0;

}

使用特权

评论回复
11
司徒老鹰|  楼主 | 2013-3-5 22:26 | 只看该作者
哦,好,知道了

使用特权

评论回复
12
司徒老鹰|  楼主 | 2013-3-5 22:27 | 只看该作者
那就多谢啦,结贴了

使用特权

评论回复
13
dirtwillfly| | 2013-3-6 10:16 | 只看该作者
chuxh 发表于 2013-3-5 22:25
#include

void sub_fun(void)

这是C语言里嵌入汇编吧。

使用特权

评论回复
14
refee| | 2013-3-6 14:08 | 只看该作者
C里面嵌入汇编可以 汇编里面嵌入C不行

使用特权

评论回复
15
cleaver.Yeh| | 2013-3-6 15:12 | 只看该作者
汇编里面嵌入C 也可以,前提是要懂得C的编译规则,尤其是传参与返回的部分。其实这是相通的。

使用特权

评论回复
16
x13686626760| | 2013-3-6 15:46 | 只看该作者
汇编里嵌入C,能编译吗?

使用特权

评论回复
17
jesuswd| | 2013-3-6 16:59 | 只看该作者
可以的,我做的一个项目就是汇编里面嵌入C 代码的,但是我没有进行传参数。

使用特权

评论回复
18
john_lee| | 2013-3-6 19:09 | 只看该作者
楼上不要混淆概念,汇编程序调用C函数,是“混合编程”(自己去度娘查),而嵌入代码,虽然没有标准说法,但通行的理解是有两种代码存在于同一个文件,分别是主体代码(比如C)和嵌入代码(比如汇编),嵌入的代码的语法没有在主体代码的规范里具体定义,而这个文件必须使用主体代码的代码转换工具(比如C编译器)进行目标码生成。

使用特权

评论回复
19
huanghongxing| | 2013-3-6 22:18 | 只看该作者
用_asm{....[汇编]}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

427

主题

3735

帖子

8

粉丝