用汇编写内存(Z80 / Gameboy)

Writing memory with assembly (Z80 / Gameboy)

我正在尝试以编程方式将字符写入内存,这样我就可以在屏幕上显示它。我如何获取一个值(例如 65)并使用 Z80 程序集将其写入内存?

根据我的阅读,这只是将寄存器加载到内存地址的情况:

ld [hl], b

除了将字符写入内存之外,我的代码似乎还能正常工作。我得到的输出是 "BBBBBBBB".

周边代码如下

printnum:
    ld a, 0         ; cursor position
    ld b, 65        ; ASCII 'A'
    ld hl, Number   ; set pointer to address of Number
overwrite:
    ld [hl], b      ; set dereference to 'A' ???
    inc hl          ; increment pointer
    inc a           ; increment acc
    cp 7            ; are we done?
    jp z, overwrite ; continue if not

    ; V output to screen V
    ld  hl, Number
    ld  de, _SCRN0+3+(SCRN_VY_B*7) ;
    ld  bc, NumberEnd-Number
    call mem_CopyVRAM

    ret             ; done
Number:
    DB  "BBBBBBBB"  ; placeholder
NumberEnd:

Gameboy 代码在 ROM:read-only 内存中执行。所以你覆盖数字的循环没有效果(试图写入 ROM 只是保留现有值)。如果你想要一个缓冲区来写入你需要确保它在 RAM 中。