Gab*_*iro 10
正如Jeffrey Bosboom和Hans Passant在评论中指出的那样,原因很简单.更具体地说,硬件简单
LD r,r'指令将源寄存器(r')的内容复制到目标寄存器(r).LD r,r'操作码遵循以下形式:
-------------------------------
BIT | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
-------------------------------
OPCODE | 0 | 1 | r | r' |
-------------------------------
Run Code Online (Sandbox Code Playgroud)
目标和源寄存器可以采用以下值:
-----------
| BIT | REG |
-----------
| 111 | A |
-----------
| 000 | B |
-----------
| 001 | C |
-----------
| 010 | D |
-----------
| 011 | E |
-----------
| 100 | H |
-----------
| 101 | L |
-----------
Run Code Online (Sandbox Code Playgroud)
为了在硬件中实现这些指令,我们只需要一个接收位0-2来选择源寄存器的多路复用器和另一个接收位3-5以选择目标寄存器的多路复用器.
如果要验证位0-2和位3-5是否指向同一寄存器,则必须向CPU添加更多逻辑.众所周知,80年代的资源更加有限:P
请注意,加载指令,例如LD A,A,LD B,B,LD C,C,LD D,D,LD E,E,LD H,H,和LD L,L行为像NOP.但是,AND A并且OR A 不要表现NOP,因为它们会影响标志寄存器,并且它们的执行可能会改变内部机器状态.