在6502汇编中,我可以在不修改累加器的情况下在内存中测试一点吗?

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

在6502汇编中,我需要根据地址

Z
处的值的第2位设置
$8000
标志的值。但我需要这样做而不覆盖
A
寄存器中的值。

我想出了这段代码,它似乎有效,但也显得不优雅,因为堆栈操作和需要测试两次(使用

and
然后
cpx
,因为
pla
覆盖了
Z
标志) :

pha
lda $8000
and #$04
tax
pla
cpx #$00

有更好的方法吗?

assembly 6502 bitflags
1个回答
0
投票

您可以使用非法操作码 LAX 来使其更短。

lax $8000
and #$04
cmp #$04
txa

LAX $xxxx 是 $AF 作为操作码。因此,即使您的汇编器不支持它,您也可以使用类似的东西内联它;

.byte $af, $00, $80
and #$04
cmp #$04
txa

但是许多 6502 汇编器支持非法操作码。有些需要额外的编译器指令。

© www.soinside.com 2019 - 2024. All rights reserved.