0
问答首页 最新问题 热门问题 等待回答标签广场
我要提问

单片机

51单片机寄存器赋值

当要把一个寄存器中的值赋给另一寄存器时,为什么不能直接赋给,而要经过累加器A呢?

比如:

MOV   A,R0

MOV   R1,A

而不能

MOV   R1,R0

提问者:鼎威新能源 地点:- 浏览次数:1781 提问时间:10-24 17:39
我有更好的答案
提 交
7条回答
1188天琪 06-29 15:46
如果所有的寄存器之间都可以直接赋值,MCU的总线结构会复杂很多。
51可以MOV dir,dir,但是SFR不能 dir 访问,只能间址访问。
andyseu 06-28 07:35
LZ,51有:
MOV Rn,dir
MOV dir.dir
所以要实现MOV R1,R0,如果确认R0/R1在BANK0(00H/01H)单元,则可以:
MOV r1,00h
或者
MOV 01H,00H
一般还是用ACC中转比较好。
f1070388065 07-04 13:37
我想明白为什么不可以
MOV   R1,R0
li124688559 07-04 21:53
8位微控制器中Z8系列的可以,通用MCU中可以的很多。
至于为什么51核这样,与它的微指令译码结构有关。
jhdfvs 07-01 16:51
51核设计为8位字长指令字,如果R0~R7间直接寻址,需要6bit,占用字长过宽,得到的益处过少。如果扩充为16位字长,速度、字长空间与MOV   A,R0  ;MOV   R1,A 一样,而且微代码结构复杂很多。
60user99 07-01 14:52
R0~R7 需要8个地址,3个bit。要直接赋值就需要两次寻址,所以就需要占6bit。
qwe043 06-29 18:44
谁说不行的??你们究竟有没有进行过实际的测试??
至少STC的51机就可以,不信自己烧这个程序试试:

ORG 0040H
MIAN:
MOV R0,P3
MOV R1,R0
MOV P1,R1
AJMP MIAN
END

这个程序是把P3做输入,把P3输出状态传给P1,P3的所有I/O外部输入变化的时候,P1输出同样值。这里就用了MOV R1,R0,测试是完全正常的!你们自己测试看看AT的行不行?
撰写答案
提 交
1 / 3
1 / 3
相关单片机
具有音调控制的单片机立体声前置放大器
用于单片机与电子装置中的开关电源
单片机软硬件复位的条件都有啥
电动机的单片机控制
单片机应用系统开发实例导航