【问题标题】:Z80 16-Bit Load Instruction and EndiennessZ80 16 位加载指令和字节序
【发布时间】:2023-02-05 00:49:20
【问题描述】:

我正在用 C# 写一个 ZX Spectrum 模拟器“为了好玩”(我想我已经开始后悔了)。

我知道 Z80 是小端字节序的,所以在 RAM 中首先存储低位字节。

对于 16 位 LD 指令的行为方式,我似乎找不到明确的答案。

例如:

LD BC, 0x1234

在此之后,B是否包含0x12C包含0x34,反之亦然?

所以,在上面之后,如果我执行:

LD A, 0x56
LD (BC), A

内存0x12340x3412是否包含0x56

如果您能够回答这个问题,请提供指向可靠来源的链接……我用谷歌搜索了其中的废话,但找不到绝对明确的答案。

提前致谢,

史蒂夫。

【问题讨论】:

  • 还有其他寄存器对.. HL...它以相同的方式工作...猜猜H和L代表什么...
  • 您按照反汇编程序显示指令的方式编写指令,或者用汇编语言编写指令。它使用“自然”顺序,人类喜欢左边最重要的字节,右边最不重要的字节。寄存器对也是如此,BC 在左边有最重要的寄存器。然而,您的模拟器看到 0x01 0x34 0x12。 Little-endian,0x34 在前。只有内存总线接口有字节序细节。

标签: c# assembly emulation endianness z80


【解决方案1】:

制造商数据表来源可靠吗? Z80 user manual 当然在操作码之后的内存中首先是 0x34 然后是 0x12

【讨论】:

  • 我有那本手册......它只是说“在执行 LD HL,5000h 指令时,HL 寄存器对包含 5000h”。不是很清楚。
猜你喜欢
  • 2011-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-12
  • 1970-01-01
相关资源
最近更新 更多