打印

ACALL和LCALL和CALL指令

[复制链接]
13856|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jack.king|  楼主 | 2007-6-25 08:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
 请教一个问题:在51单片机中有ACALL和LCALL指令,我看书并没有看到有CALL指令,

            但在实际程序中,我却看到有CALL这样的指令存在。请问三者的区别是什么?

           最关键的是:CALL这条指令为什么没有包含在51的指令系统中,但却可以书写使用???
    并且有的时候可以用CALL 代替LCALL

   

相关帖子

沙发
gyt| | 2007-6-25 10:01 | 只看该作者

自动

一般的汇编程序可以自动识别该用长还是短

使用特权

评论回复
板凳
5880527| | 2007-6-25 10:09 | 只看该作者

都用长的好了

分不清楚的时候都用LCALL好了,那几个JMP也是,除了查表跳转要分以外其他你都用长的

使用特权

评论回复
地板
jack.king|  楼主 | 2007-6-25 11:21 | 只看该作者

RE

谢谢
我 明白了
因为我要考虑它的机器周期
 现在觉得没有必要了

使用特权

评论回复
5
diannaoza| | 2007-6-25 13:06 | 只看该作者

51单片机中有ACALL和LCALL指令

只要单片机支持指令
LCALL 3字节占用空间,2个周期指令。
ACALL 2字节占用空间,2个周期指令。

使用特权

评论回复
6
NE5532| | 2007-6-25 19:05 | 只看该作者

CALL是编译器自己加的,不是标准指令

提醒:Keil在程序比较大的时候自动选择call要出错,我们吃过亏。

使用特权

评论回复
7
ayb_ice| | 2007-6-26 08:02 | 只看该作者

CALL是伪指令,会被转换为LCALL或ACALL(优先)

使用特权

评论回复
8
jack.king|  楼主 | 2007-6-26 08:57 | 只看该作者

RE

知道 了
   我在用 KEIL写程序是也发现了这个问题

使用特权

评论回复
9
runmuel| | 2014-3-31 23:23 | 只看该作者
我也碰到过这问题!调试时call和lcall一样,找遍了都找不到真正的答案,应该是6,7楼说的是对的。

使用特权

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

本版积分规则

488

主题

2158

帖子

1

粉丝