0

按照 Darryl Sloan 的 Z80 汇编语言的第一步的第 10 章的说明: 首先,我们用随机颜色的“hello”消息的 BASIC 程序填充屏幕。据我了解,汇编程序代码能够复制该屏幕数据并在屏幕清除后将其打印回来。

但是,我只是得到一个黑屏,而不是随机收集的彩色 hello。

这是asm

ORG 50000; Origin statement
LD HL, 30000 ; start address
LD BC, 6912 ; number of bytes to copy
LD DE, 16384 ; destination address
LDIR
RET

和基本

40 PRINT INK INT (RND*8); PAPER INT (RND*8); "Hello";
50 GO TO 50

我理解概念和代码,但与作者不同的是,我没有使用带有内置汇编程序的模拟器。- 这就是我可能出错的地方。

  • 在记事本中编写汇编代码。
  • 转换 asm 代码以点击
  • 加载tap文件
  • 将模拟器中的两行 BASIC 键入现有代码
  • 在模拟器中运行程序
  • 随机分配 50000 美元

源文件免费提供,可在此处找到

4

1 回答 1

2

正如@Jester 已经指出的那样,您发布的那段代码正在将内存 30000-36911 的内容复制到显示内存,在执行时它很可能被 0 填充,因此是黑屏。

您需要先使用补充传输例程将屏幕内容传输到该内存区域:

ORG 50020; Origin statement
LD HL, 16384; start address of screen
LD BC, 6912 ; number of bytes to copy
LD DE, 30000; destination address
LDIR
RET

并像往常一样从基本调用:

RANDOMIZE USR 50020 --> 将屏幕保存到 ram

RANDOMIZE USR 50000 --> 将 ram 转移回屏幕

于 2022-01-11T12:38:17.017 回答