0

背景资料

作为一个对 8 位技术有过兴趣的现代 PHP 开发人员,我对真正的低级东西有点粗略。虽然我曾使用过 Z80 处理器,并在大学完成了一些 MIP 组装,但我对 65x 处理器系列的了解最少。

我想要达到的目标

我想要做的是将我的应用程序的零页面重新定位到 0xd300 - 我有一个强制性的互联网搜索,但我无法找到一个我能够理解的好例子。我在 65c02 但在 65816 处理器上工作;感谢一位朋友,我发现您只能在本机模式下重新定位零页面,而不是模拟模式,因为 65c02 不支持它。这不是问题,因为我可以切换到本机模式来执行我正在做的事情,并在我想优雅地返回到 BASIC 时恢复到仿真模式(嗯,不仅仅是我知道的)。

如果有人也可以提供 8502 (Commodore C128) 的示例,我知道它有一个可重定位的零页。我知道这是两个问题,但这与我想做的事情有关。

4

1 回答 1

1

Direct Page 寄存器D是一个 16 位寄存器,用于指定 bank 0 中哪个 256 字节的页面应该是当前的 Direct Page(你称之为零页面)。

您可以使用几种不同的指令来写入D. 因此,例如这样的事情应该可以工作:

rep #$20  ; 16-bit accumulator
lda #$100
tcd       ; transfer 16-bit accumulator to D

请注意,允许页面从任何字节边界开始。因此,您可以例如设置D=2并在[0002, 0101].

于 2021-10-19T06:35:35.283 回答