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

Pau*_*aul 3 assembly z80 gameboy

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

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

ld [hl], b
Run Code Online (Sandbox Code Playgroud)

我的代码似乎与将字符写入内存分开.我得到的输出是"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:
Run Code Online (Sandbox Code Playgroud)

Vil*_*nde 8

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