Z80指令寄存器大小

lil*_*roo 1 assembly z80 emulation

我正在编写一个Z80仿真器,我对指令寄存器的大小感到困惑.

在Z80手册中,它指出指令长度为1到4个字节,我是否假设Z80具有32位指令寄存器?如果没有,那么它如何执行这样的指令?

在此输入图像描述

Mic*_*ael 12

没有指令寄存器,您不能立即获取整个指令.相反,你逐件取出它.

让我们来看看你的示例说明:

  • 您的仿真器首先从当前PC获取一个字节,然后递增PC.
  • 它查看字节,即0xDD,并且仿真器知道这是"IX指令前缀"(因为你知道这一点,因此已经编程了你的模拟器来了解它).然后,您的模拟器将获取另一个字节以获取实际的操作码.
  • 操作码字节为0x36,您的仿真器知道前缀为0xDD的0x36LD (IX+d),n与编码有关0xDD 0x36 dd nn.
  • 你的模拟器,然后取了ddnn字节,写nn(IX+dd),增加周期计数器,并进入下一个指令.

如果你想编写一个周期精确的模拟器,事情会变得复杂一点,但如果你是模拟器的初学者,我不会建议你.