用汇编编写内存(Z80 / Gameboy)

时间:2015-12-29 19:23:59

标签: assembly z80 gameboy

我正在尝试以编程方式将字符写入内存,以便我可以在屏幕上显示它。我如何获取一个值(比如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:

1 个答案:

答案 0 :(得分:8)

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