質問

これを私の2番目のZ80 DAAの質問にしたことをお詫びします - 私は今この指示をほとんど実装していますが、私が確信していないことが1つあります - Hフラグはこの指示によって設定されていますか? Z80マニュアルには「命令を参照」と書かれていますが、それは実行後ではなく、DAAの前に旗に言及しています。

フラグを次のように設定します。

sはマイナス(0x80および結果等しい0x80)の場合に設定されますzは結果がゼロである場合に設定されます(したがってこの質問は確かではありません)p/vは結果のパリティに設定されます(1均一、0の場合は0)n単独で残っているcは、元のアキュムレータ値のより高いニブルが変更された場合に設定されています

これ以外に、私はそれを期待しているように、指示は実行されているようです:-)私は誰かが私のためにこれをクリアすることができることを願っています、どうもありがとう。

役に立ちましたか?

解決

それは良い質問です。はい、hフラグの動作は、行動が非標準であるため、明確に文書化されていません DAA.

Aのより低いニブル(最も重要な4ビット)が非ベース10の数(A、B、C、D、E、Fのような9を超える)の場合 また Hフラグが設定され、6がレジスタに追加されます。これは、低いニブルが0〜9の範囲にある場合でも、Hフラグを設定してレジスタに6を追加することを強制することができます。

あなたの質問に関しては、Hフラグ いつもの 私の経験では手つかずのままですが、「効果は標準以外」であると言われているため、Hフラグは状況に応じて変化したり、変わらない可能性があると言われているため、それに依存することはできません。このような場合、あなたは常にHフラグが影響を受けると考えるべきです DAA 実行後の命令は、テストで影響を受けていないと見ていても。

他のヒント

見つけることができました ここ ハーフキャリー/借入フラグがDAAによって変更されていること。

このフラグは、AF(補助キャリー)フラグがX86 CPUのDAAおよびDASの指示によって設定されるようにまさに設定することをお勧めします。 I8080/I8085/Z80とI8086のDAA/DASの間に操作に違いがあるべき理由はないと思います。

X86 DAA/DASは、アキュムレータの最低4ビットを6枚調整した場合、AFを1に設定します。それらを調整しないと、AFを0にリセットします。

Intel(またはAMD)x86 CPUマニュアルのDAAおよびDASの擬似コードを参照してください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top