0

我正在尝试创建一个如下所示的 switch 语句,该语句运行良好,直到有东西穿过页面。切换目标是自动生成的,这就是它在另一个文件中的原因。'structure, x' 保存偏移量(大小写开关)。在以下情况下,它将是 00 美元、02 美元、04 美元或 06 美元。

有没有办法确保ret​​urnAddr 不在$xx00?(这在这里真的很重要吗?)并且切换列表没有跨越边界?

    lda #>returnAddr
    pha
    lda #<returnAddr-1
    pha

    ; store where we want to go
    lda switchlist+1
    pha
    lda switchlist
    clc
    adc structure, x
    pha

    rts ; make call to the proc in the switchlist

returnAddr:
    ; ...
    rts

在另一个文件中(其中 case_x 是函数标签)

switchlist:
    .word case_1
    .word case_2
    .word case_3
    .word case_4
4

0 回答 0