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

[复制链接]
1737|5
 楼主| gudeng614 发表于 2009-4-27 09:59 | 显示全部楼层 |阅读模式
关于汇编与C混合编程的问题?
编译老是有两个警告,说是找不到什么东西,
有可能是没有加入什么库,怎么加入呢,加在哪里呢,谢谢
古道热肠 发表于 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
ayb_ice 发表于 2009-4-27 20:56 | 显示全部楼层

这不是混合编程

这是内嵌汇编
 楼主| 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

粉丝
快速回复 在线客服 返回列表 返回顶部