替换 sjasm 宏中的 var

问题描述 投票:0回答:1

我正在创建一个 sjasm 宏,所以我可以使用


L_E52A:
        ld hl, $58A0
        ld c, $12

        _do
                inc hl
                ld b, $1E

                _do 
                        ld (hl), a
                        inc hl
                _djnz
                inc hl
                dec c
        _while nz

        ret

我抓了这个,但没用



DLOOP_3 = 0
DLOOP_2 = 0
DLOOP_TOP = 0

    MACRO DLOOP_PUSH arg

DLOOP_3 = DLOOP_2
DLOOP_2 = DLOOP_TOP
DLOOP_TOP = arg
    ENDM

    MACRO DLOOP_POP

DLOOP_TOP = DLOOP_2
DLOOP_2 = DLOOP_3
DLOOP_3 =  0
    ENDM

    MACRO _do
        DLOOP_PUSH $
DLOOP_TOP:
    ENDM

    MACRO _while flag

        jr flag, DLOOP_TOP
        DLOOP_POP
    ENDM


    MACRO _djnz

        djnz
        DLOOP_POP
    ENDM

DLOOP_TOP 未替换为 DLOOP_TOP 的实际值 我想让这个工作正常,这样我就可以看到 asm 有点像 js

我是 z80 asm 的菜鸟

请帮忙

assembly z80
1个回答
0
投票

汇编器知道“可重用标签”,请参阅文档

因此您不需要堆栈来组织循环标签。

    MACRO _do
1
    ENDM

    MACRO _while flag
        jr flag, 1b
    ENDM

    MACRO _djnz
        djnz 1b
    ENDM
© www.soinside.com 2019 - 2024. All rights reserved.