スタック内の2つの値を比較して、小さい方を見つける方法を知りたいのですが。私は初心者だから、もし私がAcumulatorを使うべきかどうか、そしてそれが8ビットのレジスタだと考えると、Stackは各値に対してレジスタのペアを使います。あなたが私を助けることができれば感謝します、ありがとうございます!8085 - スタック内の2つの値を比較するには
インテル構文
スタック内の2つの値を比較して、小さい方を見つける方法を知りたいのですが。私は初心者だから、もし私がAcumulatorを使うべきかどうか、そしてそれが8ビットのレジスタだと考えると、Stackは各値に対してレジスタのペアを使います。あなたが私を助けることができれば感謝します、ありがとうございます!8085 - スタック内の2つの値を比較するには
インテル構文
あなたがスタックからpop
の値は、あなたがそれを苦労して行う必要があるでしょうができない場合。 8085(もZilog Z80)CPUもスタックから直接読み取ることはできません。
HL
レジスタのペアに値のポインタをコピーし、(HL)
のメモリ位置にあるメモリを読み取る必要があります。
8085では、スタックポインターを直接HL
にコピーすることはできませんが、HL
に追加することができます。
例:アドレス(SP + 5)のスタックにあるバイトと、アドレス(SP + 10)にあるバイトを比較します。
その後、我々は(ここでは8085分の8080構文ではなく、Z80構文で)次のようにします。フラグは、比較結果に応じて設定されているCMP
命令後
LXI H, 5 ; Set HL to 5
DAD SP ; Add the address of the stack to HL -> HL contains (SP+5)
MOV A,M ; Load the byte at (HL) into the accumulator
LXI H, 10 ; Set HL to 10
DAD SP ; Add the address of the stack to HL -> HL contains (SP+10)
CMP M ; Compare the byte at (HL) to the accumulator
。
16,24,32ビットの数字を比較する場合は、最初に最上位バイトを比較する必要があります。ゼロフラグが設定されている場合は、両方のバイトが同一であることを意味します。この場合、次のバイトを最下位バイトまで、またはゼロフラグが設定されなくなるまで比較します。
@Ruan_Lopes異なるアーキテクチャ。 – fuz