MOV DD是什么意思?

hac*_*cks 4 assembly microprocessors 8085

在汇编语言,指令

MOV A B
Run Code Online (Sandbox Code Playgroud)

表示将B(来源)的内容移动到A(目的地).
我突然想出了指示

MOV D D
Run Code Online (Sandbox Code Playgroud)

这意味着什么?

我在实验手册中看到了这一点.截图:

在此输入图像描述

Jim*_*hel 7

8085寄存器到寄存器的MOV指令是正交的.也就是说,存在将任何8位寄存器移动到任何其他8位寄存器的操作码.因此MOV D,D将D寄存器的内容移到D寄存器.它没有做任何有用的,并且不影响任何标志,但它是一个有效的指令就像是MOV A,A,MOV B,B

将寄存器复制到自身实际上是"无操作"或NOP指令."官方"8085 NOP是操作码00,但任何寄存器移动到自身指令都具有相同的效果.

它实际上只是处理器设计方式的一种神器.你可以做一些利用这些指令的技巧,但它们通常不是很有用.


Han*_*ant 5

你必须牢记这个时代,8085是在1977年设计的.当时的集成电路工艺技术并没有那么先进,它们可以放在芯片上的晶体管数量有一个非常严格的上限.它只使用了6,500个.

这严重限制了他们可以用来实现处理器的逻辑类型.操作码中选择操作数的位直接传递给寄存器组多路复用器.并且在使用寄存器的其他指令中占据相同的位位置和含义.燃烧额外晶体管的预算不能用于没有意义的操作数的特殊例外.将它们留在原地并且不用逻辑来处理特殊情况要简单得多且便宜得多.

没有太大的问题,没有人会意外地使用荒谬的指令.

它的工作方式相反,有时处理器在指令集中有一个明显的漏洞.Z80就是这样.用于在前几个硅通道中被窃听的指令,并且被认为不足以修复.所以他们只是把它从文档中删除了.或者将它们留在原地,6502是臭名昭着的马车.虽然有一个非常有吸引力的价格:)