打印

讨论:有了CALL(JMP)为什么还要RCALL(RJMP)?

[复制链接]
8649|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
柳叶飞仙|  楼主 | 2012-10-4 08:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
CALL和RCALL的区别:1、指令长度不同;2、指令执行所需机器周期不同;3、寻址范围不同。
       难道说在小范围内寻址用RCALL代替CALL,仅是节省了ROM空间和CPU执行时间?以前看微机书的时候,里面有说:尽量使用相对寻址,以便于程序的移植。不知道类似RCALL一类的指令是否因此而被设计出来?

相关帖子

沙发
NE5532| | 2012-10-4 11:53 | 只看该作者
指令长度不同,从汇编的角度看,这两条指令用得非常多,不分青红皂白地换成长指令,目标代码就非常大了。

使用特权

评论回复
板凳
NE5532| | 2012-10-4 11:53 | 只看该作者
另外你说的编程里面的绝对寻址和相对寻址跟这个指令是两码事。

使用特权

评论回复
地板
柳叶飞仙|  楼主 | 2012-10-4 12:27 | 只看该作者
3# NE5532

但今天看AVR汇编指令介绍说,RCALL指令属于ROM空间的相对寻址范畴,CALL属于ROM空间的直接寻址范畴

使用特权

评论回复
5
柳叶飞仙|  楼主 | 2012-10-4 12:32 | 只看该作者
假设有如下程序代码:
    org 0x0100
      rcall   ?
      nop
      ...
  
      org 0x0200
Fun1:
      ...
      ret

上面代码中的?应该是Fun1呢?还是 (0x0200-0x100-2)呢?

使用特权

评论回复
6
NE5532| | 2012-10-4 15:46 | 只看该作者
其实是一码事,让你从3楼上1层楼和直接告诉你去4楼是一样的。

你的程序应该写

rcall fun1

看来你还是没彻底搞懂相对寻址

使用特权

评论回复
7
与时俱进| | 2012-10-4 16:59 | 只看该作者
相对寻址,操作数是地址的偏移量;
绝对寻址,操作数是绝对地址。

使用特权

评论回复
8
hjs1618| | 2012-10-4 20:24 | 只看该作者
相对寻址,操作数是地址的偏移量;这时还要加上一个固定地址,才能得到绝对地址
绝对寻址,操作数是绝对地址。

使用特权

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

本版积分规则

1

主题

5

帖子

0

粉丝