我正在尝试以编程方式将字符写入内存,以便我可以在屏幕上显示它。我如何获取一个值(比如65)并使用Z80程序集为Gameboy写入内存?
根据我的阅读,这只是将寄存器加载到存储器地址的情况:
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:
答案 0 :(得分:8)
Gameboy代码在ROM中执行:只读内存。因此,覆盖数字的循环无效(尝试写入ROM只保留现有值)。如果你想要写一个缓冲区,你需要确保它在RAM中。