z80 汇编器 ret z;和一个; ret

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

我有以下 Z80 asm 代码(来自口袋妖怪遗产水晶)

CheckOnWater::
    ld a, [wPlayerStandingTile]
    call GetTileCollision
    sub WATER_TILE
    ret z
    and a
    ret

我想知道这是什么意思

ret z
and a
ret

据我了解,

sub WATER_TITLE
设置了z标志,有条件返回感觉多余,然后
and a
只是再次设置z标志然后返回。

我不能用

ret
替换全部三行吗?

我错过了什么?

assembly return z80
1个回答
0
投票

逻辑指令无条件清除进位标志。

ret z
返回带有清除的 C,因为结果为零。

如果

and a

 保留其设置,则 
sub WATER_TITLE
清除 C 标志。

您可能需要搜索

CheckOnWater
调用的来源,以检查进位标志是否重要。不管怎样,可能需要带着清除的进位标志返回。

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