各位大侠,本人遇到棘手问题。。。解决的单独给100分。。(不够再加)

dreamhmily 2004-08-31 08:56:26
公司原来的程序员走了,现在我要接替他的工作。。可是他们原来的程序中有这样一些反汇编的代码,其中有以下几个函数,程序运行到如下几个函数处即复位。。到底是不是和编译器有关啊?这些函数不是自己的c程序中的函数。。。

EXTRN CODE (?C_FCASTI)
EXTRN CODE (?C_LPUSH)
EXTRN CODE (?C_FPMUL)
EXTRN CODE (?C_FPDIV)
EXTRN CODE (?C_FPADD)
EXTRN CODE (?C_CASTF)
EXTRN CODE (?C_FPSUB)

我分析应该是系统函数,其中
EXTRN CODE (?C_FPMUL) 乘
EXTRN CODE (?C_FPDIV) 除
EXTRN CODE (?C_FPADD) 加
EXTRN CODE (?C_FPSUB) 减

疑问:这些函数是哪里的函数?还有按照命名规则这这些函数应该是无参数的,可是加减乘除的函数怎么可能没有参数呢??


...全文
226 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
微启子 2004-09-03
  • 打赏
  • 举报
回复
学习!!顶一下!!
asma_asma 2004-09-03
  • 打赏
  • 举报
回复
不明白,顶一下!!!
Leo 2004-09-02
  • 打赏
  • 举报
回复
根据你的信息,可以作出一些判断:
1.
EXTRN CODE (?C_FPMUL)
EXTRN CODE (?C_FPDIV)
EXTRN CODE (?C_FPADD)
EXTRN CODE (?C_FPSUB)
是浮点数的乘除加减,应该是系统函数.
2.
原始的编译器应该不是KEIL C51.因为KEIL C51的函数命名是?C?FPMUL, ?C?FPDIV,
?C?FPADD和?C?FPSUB

我手头没有其他的C51(感觉KEIL C51功能最好,其他的都仍了),以上的函数KEIL C51的库c51fps.lib(小模式),c51fpc.lib(紧凑模式),c51fpl.lib(大模式)中可以找到.你可以在其他的C51中相应的库中找找看.

dreamhmily 2004-09-01
  • 打赏
  • 举报
回复
在math.h中没有的,名字不同只是加了问号等改变。。肯定不是math.h中的,因为该文件已包含在程序中了。。
leky2000 2004-09-01
  • 打赏
  • 举报
回复
这些函数应该是算数运算函数,应该在math.h中能够找到.
不过名字在编译生成的汇编中应该是不同的
dreamhmily 2004-08-31
  • 打赏
  • 举报
回复
楼上所说的硬件或者ROM空间不足的问题。应该是不存在的。。因为是同样的程序。。
以前的人不肯说,所以才会这样的。。。那我现在是不是可以把以上所列举的c51都试一下。。
Leo 2004-08-31
  • 打赏
  • 举报
回复
这些是单片机的库函数,由于你没有链接,所以程序运行不正常.
至于如何解决:
1.明确以前是用的何种C51, Keil, Franklin还是Archimede.
2.明确以前是用什么模式编译的
3.先在IDE环境中模拟,如果运行正常,考虑是否硬件的原因,如ROM或RAM不足,中断处理不对
4.把你的设计电路和程序发来,我帮你看看
loveisbug 2004-08-31
  • 打赏
  • 举报
回复
信息不足,看不明白。
AthlonxpX86 2004-08-31
  • 打赏
  • 举报
回复
我说的参数的意思是函数中可能使用了全局变量,这些变量可能是而不是寄存器或者内存,不是真正意义上的函数参数
dreamhmily 2004-08-31
  • 打赏
  • 举报
回复
不是这样的,按照c51命名规则,以问号开头,加大写函数名,表示没有参数的函数。
AthlonxpX86 2004-08-31
  • 打赏
  • 举报
回复
除法错?程序跑飞?注意传参,虽然没定义,但肯定有,具体可能是哪个寄存器或者内存
galle 2004-08-31
  • 打赏
  • 举报
回复
是通过r寄存器,a等传送的。

27,509

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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