4

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

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

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:
4

1 回答 1

9

Gameboy 代码在 ROM 中执行:只读存储器。因此,覆盖数字的循环无效(尝试写入 ROM 只会保留现有值)。如果要写入缓冲区,则需要确保它在 RAM 中。

于 2015-12-29T19:41:32.787 回答