汇编程序调用C语言程序?

geziyuan2008 2008-12-03 10:40:49
请问汇编程序怎么调用C语言程序啊?给出具体做法吧,我试了一下,不成功!!!!
...全文
362 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
xianboyan 2009-02-19
  • 打赏
  • 举报
回复
留给知道的人来解答
lin115406828 2009-02-19
  • 打赏
  • 举报
回复
初学者进来看看!
jinzi822 2009-02-17
  • 打赏
  • 举报
回复
的确值得探讨一下,平时不怎么注意这个问题
Johnsen2009 2009-02-17
  • 打赏
  • 举报
回复
//*************************Main.c***********************************************
#include "func.h"
name main
extern func
rseg CODE
main: ld hl,3
push hl //第三个参数压栈
ld de,1
ld bc 2
call func
ld (result),hl
pop hl //保证堆栈匹配
halt
end



//*************************func.h***********************************************
#ifndef _FUNC_H //include protect
#define _FUNC_H
#ifdef __IAR_SYSTEMS_ICC //only include by c module
// add c definitions here

non_banked int func(int a,int b,int c);
#endif /* __IAR_SYSTEMS_ICC */
#ifdef __IAR_SYSTEMS_ASM //only include by asm module
// add asm definitions here

#endif /* __IAR_SYSTEMS_ASM */
#endif /*_FUNC_H */



//*************************func.h***********************************************
#include "func.h"
non_banked int func(int a, int b, int c)
{
return a+b+c;
}
nail63547188 2009-02-14
  • 打赏
  • 举报
回复
印象中,要想达到你的目的,应该对调用约定这方面的知识比较熟悉才可以的。
gooogleman 2009-02-10
  • 打赏
  • 举报
回复
马忠梅的书有讲到
忘记了

现在只记得ARM的

使用宏指令CALL
R0~R3传递参数,超过四个参数使用栈
harry_1523 2009-02-09
  • 打赏
  • 举报
回复
很久没用c51汇编,凭借记忆回答一下lz的问题吧.

如果是没参数的C函数
用call就可以
但如果有参数就麻烦一点,因为c51不像x86,参数不是压栈,而是放入R1-R7寄存器中的.


/* 附表 */
参数类型 char int long/float 通用指针
第1个 R7 R6&R7 R4-R7 R1-R3
第2个 R5 R4&R5 R4-R7 R1-R3
第3个 R3 R2&R3 -- R1-R3
xtdumpling 2009-02-08
  • 打赏
  • 举报
回复
对51C不熟
不过可以采用 用51C编译器编出汇编文件,然后在汇编文件中加自己汇编代码的方法.
或者分析出51C的汇编形式,就好写了.
michael-dang 2009-02-08
  • 打赏
  • 举报
回复
你可以先把函数的参数按照参数列表的反序入栈,然后call 需要调用的函数即可
michael-dang 2009-02-08
  • 打赏
  • 举报
回复
你可以先把函数的参数按照参数列表的反序入栈,然后call 需要调用的函数即可
cnzdgs 2008-12-04
  • 打赏
  • 举报
回复
对51不熟,不清楚。
geziyuan2008 2008-12-04
  • 打赏
  • 举报
回复
汇编和51C混合编程啊
cnzdgs 2008-12-03
  • 打赏
  • 举报
回复
哪种汇编,哪种C,生成什么样的程序?

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧