打印

请教:call lcall有何区别?

[复制链接]
3402|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cgkdxx|  楼主 | 2007-1-18 10:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
书上说是2K 64K的区别,那么我全部都用lcall,肯定不会错了,那call有社么意义?或者说两者执行后有何不同?谢谢!
沙发
HWM| | 2007-1-18 11:29 | 只看该作者

没有call,只有acall和lcall

acall 为双字节指令有效转移地址场为11位,所以只能改变PC中的低11位(2Kblocks)。而lcall为三字节指令有效转移地址场为16位,能作任何位置的转跳。

使用特权

评论回复
板凳
langman| | 2007-1-18 12:42 | 只看该作者

?

应该它们的执行时间不一样 (猜的)
学习中

使用特权

评论回复
地板
winhiwang| | 2007-1-18 13:21 | 只看该作者

对于51MCU,主要是占用ROM数量不一样,也就是指令长度不同

使用特权

评论回复
5
cgkdxx|  楼主 | 2007-1-18 13:38 | 只看该作者

那就几乎没区别?

使用特权

评论回复
6
dengm| | 2007-1-18 14:08 | 只看该作者

汇编器会把 CALL 编为 ACALL or LCALL,

   2K页内编为 ACALL (2 bytes);
 非2K页内编为 LCALL (3 bytes).

使用特权

评论回复
7
zsh1980| | 2007-1-18 15:31 | 只看该作者

有区别

CALL 寻址2K空间范围
LCALL 寻址64K空间范围

使用特权

评论回复
8
cgkdxx|  楼主 | 2007-1-18 15:47 | 只看该作者

如果一律用lcall,那

call还有社么用?

使用特权

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

本版积分规则

192

主题

1126

帖子

0

粉丝