在汇编语言中,指令
MOV A B
意味着将B
(源)的内容移动到A
(目的地)。
我突然想到了指令
MOV D D
这意味着什么?
我在我的实验室手册中看到了这一点。截屏:
在汇编语言中,指令
MOV A B
意味着将B
(源)的内容移动到A
(目的地)。
我突然想到了指令
MOV D D
这意味着什么?
我在我的实验室手册中看到了这一点。截屏:
8085 寄存器到寄存器 MOV 指令是正交的。也就是说,有一些操作码可以将任何 8 位寄存器移动到任何其他 8 位寄存器。所以MOV D,D
将 D 寄存器的内容移动到 D 寄存器。它没有做任何有用的事情,也不会影响任何标志,但它是一个有效的指令,就像MOV A,A
,MOV B,B
等一样。
将寄存器复制到自身实际上是“无操作”或NOP
指令。“官方” 8085NOP
是 opcode 00
,但任何 register-move-to-itself 指令都具有相同的效果。
它实际上只是处理器设计方式的产物。您可以使用这些指令执行一些技巧,但它们通常不是很有用。
您必须牢记那个时代,8085 是在 1977 年设计的。当时集成电路工艺技术还没有那么先进,他们可以在芯片上放置的晶体管数量有一个非常严格的上限。它只使用其中的 6,500 个。
这严重限制了他们可以用来实现处理器的逻辑类型。操作码中选择操作数的位直接传递给寄存器组多路复用器。并且在使用寄存器的其他指令中占据相同的位位置和含义。烧毁额外晶体管以对没有意义的操作数进行特殊例外的预算是不可用的。将它们留在原处而不用用逻辑来处理例外情况要简单得多,也便宜得多。
问题不大,没有人会意外使用这些无意义的指令。
顺便说一句,它也以相反的方式工作,有时处理器在指令集中有一个明显的漏洞。Z80就是这样。用于在最初的几次硅通道中出现错误并且被认为不足以修复的指令。所以他们只是把它排除在文档之外。或者把它们留在原地,6502 是出了名的越野车。有一个非常有吸引力的价格虽然:)
这是一个 NOP 操作,用于程序延迟。