打印

关于汇编与C混合编程的问题?

[复制链接]
1334|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gudeng614|  楼主 | 2009-4-27 09:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
古道热肠| | 2009-4-27 10:35 | 只看该作者

什么警告?采用什么方式,嵌入汇编还是汇编函数实现?

要给出完整的提示信息,大家才好帮您看看现象,找找原因的.

使用特权

评论回复
板凳
gudeng614|  楼主 | 2009-4-27 12:20 | 只看该作者

程序如下

#include <reg51.h>
void main(void)

{

P2=1;

#pragma asm

          MOV R7,#10

DEL:MOV R6,#20

          DJNZ R6,$

          DJNZ R7,DEL

#pragma endasm

P2=0;

}

使用特权

评论回复
地板
刘前辈| | 2009-4-27 12:48 | 只看该作者

第一条:#pragma SRC

编译正确: 

COMPILER INVOKED BY:
;        C:KeilC51BINC51.EXE D:Keiltest est.c OPTIMIZE(6,SPEED) BROWSE DEBUG OBJECTEXTEND PRINT(. est.lst) OBJECT


?PR?main?TEST        SEGMENT CODE 
    EXTRN    CODE (?C_STARTUP)
    PUBLIC    main

; #pragma  src
; #include <reg51.h>
;
;
; void main(void)

    RSEG  ?PR?main?TEST
main:
            ; SOURCE LINE # 10

; {
            ; SOURCE LINE # 12

; P2=1;
            ; SOURCE LINE # 14
    MOV      P2,#01H

; #pragma asm

      
;           MOV R7,#10
      MOV R7,#10

      
; DEL:MOV R6,#20
      DEL:MOV R6,#20

      
;           DJNZ R6,$
      DJNZ R6,$

      
;           DJNZ R7,DEL
      DJNZ R7,DEL

      
; #pragma endasm

; P2=0;
            ; SOURCE LINE # 28
    CLR      A
    MOV      P2,A

; }
            ; SOURCE LINE # 30
    RET      
; END OF main

    END

使用特权

评论回复
5
ayb_ice| | 2009-4-27 20:56 | 只看该作者

这不是混合编程

这是内嵌汇编

使用特权

评论回复
6
gudeng614|  楼主 | 2009-4-29 12:22 | 只看该作者

因为加一个.asm程序报错是一个地方。所以没有写上来

因为加一个.asm程序报错是一个地方。所以没有写上来

*************DELAY.asm****************
?PR?DELAY SEGMENT CODE; //在程序存储区中定义段
PUBLIC DELAY; //声明函数为公共函数
RSEG ?PR?DELAY; //函数可被连接器放置在任何地方
DELAY:
MOV R7,#10
DEL0: MOV R6,#20
DEL1: DJNZ R6,DEL1
DJNZ R7,DEL0
RET
END

*************example2.c****************
#include <reg51.h>
extern void delay(); //声明此函数为外部函数
void main(void)
{
P2=1;
delay();
P2=0;
}

使用特权

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

本版积分规则

49

主题

188

帖子

0

粉丝