请教:call lcall有何区别?

[复制链接]
 楼主| 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数量不一样,也就是指令长度不同

 楼主| cgkdxx 发表于 2007-1-18 13:38 | 显示全部楼层

那就几乎没区别?

dengm 发表于 2007-1-18 14:08 | 显示全部楼层

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

   2K页内编为 ACALL (2 bytes);
 非2K页内编为 LCALL (3 bytes).
zsh1980 发表于 2007-1-18 15:31 | 显示全部楼层

有区别

CALL 寻址2K空间范围
LCALL 寻址64K空间范围
 楼主| cgkdxx 发表于 2007-1-18 15:47 | 显示全部楼层

如果一律用lcall,那

call还有社么用?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

192

主题

1126

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

192

主题

1126

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部