单片机编程指令MOV A,00H和MOV A,R0的执行周期,为什么前者是2个周期,后者是1个周期?求详细解释!
答案:5 悬赏:70 手机版
解决时间 2021-11-30 17:47
- 提问者网友:轻浮
- 2021-11-29 18:08
单片机编程指令MOV A,00H和MOV A,R0的执行周期,为什么前者是2个周期,后者是1个周期?求详细解释!
最佳答案
- 五星知识达人网友:怀裏藏嬌
- 2021-11-29 18:24
没有什么为什么,厂家这么做的,你能怎么样呢,前者是多字节指令,后者是个单字节指令,
R0地内存地址可不一定在00H上,因为有当前使和的寄存器组的设置,R0可能在第二组、第三组或第四组上。
从寄存器里取数据应当就是会比从内存里取数据要快些,这个所谓的快就是表现在指令的周期长短上了,即使这个寄存器与这个内存地址是同一地址,操作方式不同也没有理由要求它们指令周期相同吧,指令的长短和周期是生产厂商预先定下的,你只要知道如何用有什么区别,不需要知道为什么,好比阿拉伯数字,为什么2写成这样,3写成了那样,问这个为什么就很没有意义了
R0地内存地址可不一定在00H上,因为有当前使和的寄存器组的设置,R0可能在第二组、第三组或第四组上。
从寄存器里取数据应当就是会比从内存里取数据要快些,这个所谓的快就是表现在指令的周期长短上了,即使这个寄存器与这个内存地址是同一地址,操作方式不同也没有理由要求它们指令周期相同吧,指令的长短和周期是生产厂商预先定下的,你只要知道如何用有什么区别,不需要知道为什么,好比阿拉伯数字,为什么2写成这样,3写成了那样,问这个为什么就很没有意义了
全部回答
- 1楼网友:duile
- 2021-11-29 20:58
设计师决定的
- 2楼网友:想偏头吻你
- 2021-11-29 20:24
老兄你搞错了吧,都是一周期啊,如下图。其实假如不是一样也很正常啊,因为跟本不是一个指令,mov只是助记符,用来助记传送类的,但只要操作数和目的数的类型不一样,最后写进单片机里对应的操作码都是不一样的,就不是一个指令,下表中的这些mov都是不同的指令。即便同一个寄存器你用它的不同格式也不行
- 3楼网友:空山清雨
- 2021-11-29 18:48
这是由单片机的硬件结构所决定的,单片机内部有一个叫ALU的算术逻辑运算单元,这是单片机最核心的硬件。从单片机的内部结构中可以看出,ALU与寄存器之间是可以直接进行数据传送的,这就决定了诸如MOV A,R0这类对寄存器操作的指令执行速度最快。而MOV A,00H虽然也指向寄存器区(对51单片机而言),但却是通过内部总线与ALU传送数据的,相对于MOV A,R0显然是绕道而行,指令的执行多1个周期也就顺理成章了。
- 4楼网友:迷人又混蛋
- 2021-11-29 18:30
前者为立即寻址:其中取指周期需要一个T,执行周期需要一个T后者为寄存器寻址:因为执行周期中完成两个通用寄存器A,R0之间的数据传送,由于时间充足,执行周期一般只需一个T。(严格来说T为一个CPU周期,包含若干个时钟周期)
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯