打印

C语言中调用汇编写的子程序

[复制链接]
3984|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gaohq|  楼主 | 2008-9-4 17:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用汇编写的个子程序 
DELAY:MOV R1,10
       MOV R2,7
       .
       .
       .
       .  
在C中如何调用它?
main()
{
  #asm
  DELAY:
       MOV R1,10
       MOV R2,7
  #endasm
   .
   .
   .
   .
   .
}
这样写吗?感觉每次调用都要重写一遍很麻烦。
              

相关帖子

沙发
mohanwei| | 2008-9-4 18:47 | 只看该作者

看伟福的例程吧……

你自己编个C函数,生成SRC文件看一下也可以,很简单的

使用特权

评论回复
板凳
天雨粟| | 2008-9-5 23:08 | 只看该作者

这样试试

另外建立一个模块文件,以*.asm为名保存在当前目录下,模块文件内容如下:

NAME DELAYF
PUBLIC DELAY
SEG_DELAY SEGMENT CODE
RESEG SEG_DELAY
USING 0
DELAY:PUSH ACC
      PUSH AR1
      PUSH AR2
      MOV R1,10
      MOV R2,7
        .
        .
        .
      POP AR2
      POP AR1
      POP ACC
      RET
      END
你在C中可以这种方式调用这个函数(子程序):delay();
将此模块文件与其它C源文件一起添加到文件组中,让KEIL自动汇编它,并与其它C程序一起连接定位,应该就可以了!

使用特权

评论回复
地板
gaohq|  楼主 | 2008-9-6 13:54 | 只看该作者

谢谢三楼,

昨天看了2楼的回答,郁闷了好半天,今天正准备再来问的,见了3楼的指点,明白啦,再次感谢3楼!!!

使用特权

评论回复
5
walnutcy| | 2008-9-7 12:47 | 只看该作者

其实2楼给出的是"渔",呵呵,

使用特权

评论回复
6
kiki988| | 2008-9-7 19:03 | 只看该作者

学习

看了三楼的也是受益匪浅,以前的编法也是和楼主一样的。不错,学习!

使用特权

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

本版积分规则

378

主题

3763

帖子

5

粉丝