【问题标题】:Writing memory with assembly (Z80 / Gameboy)用汇编写内存(Z80 / Gameboy)
【发布时间】:2015-12-29 19:23:59
【问题描述】:

我正在尝试以编程方式将字符写入内存,以便我可以将其显示在屏幕上。如何使用 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:

【问题讨论】:

    标签: assembly z80 gameboy


    【解决方案1】:

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

    【讨论】:

    • 这正是我的问题。我将我的数据移动到 $C000 并且效果很好。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2017-10-14
    • 1970-01-01
    • 2021-02-04
    • 2017-05-12
    • 2013-08-13
    • 1970-01-01
    • 2012-01-22
    • 1970-01-01
    相关资源
    最近更新 更多