【发布时间】:2023-02-05 00:49:20
【问题描述】:
我正在用 C# 写一个 ZX Spectrum 模拟器“为了好玩”(我想我已经开始后悔了)。
我知道 Z80 是小端字节序的,所以在 RAM 中首先存储低位字节。
对于 16 位 LD 指令的行为方式,我似乎找不到明确的答案。
例如:
LD BC, 0x1234
在此之后,B是否包含0x12和C包含0x34,反之亦然?
所以,在上面之后,如果我执行:
LD A, 0x56
LD (BC), A
内存0x1234或0x3412是否包含0x56?
如果您能够回答这个问题,请提供指向可靠来源的链接……我用谷歌搜索了其中的废话,但找不到绝对明确的答案。
提前致谢,
史蒂夫。
【问题讨论】:
-
还有其他寄存器对.. HL...它以相同的方式工作...猜猜H和L代表什么...
-
您按照反汇编程序显示指令的方式编写指令,或者用汇编语言编写指令。它使用“自然”顺序,人类喜欢左边最重要的字节,右边最不重要的字节。寄存器对也是如此,BC 在左边有最重要的寄存器。然而,您的模拟器看到 0x01 0x34 0x12。 Little-endian,0x34 在前。只有内存总线接口有字节序细节。
标签: c# assembly emulation endianness z80