2017-12-12 5 views
0

スタック内の2つの値を比較して、小さい方を見つける方法を知りたいのですが。私は初心者だから、もし私がAcumulatorを使うべきかどうか、そしてそれが8ビットのレジスタだと考えると、Stackは各値に対してレジスタのペアを使います。あなたが私を助けることができれば感謝します、ありがとうございます!8085 - スタック内の2つの値を比較するには

インテル構文

+0

@Ruan_Lopes異なるアーキテクチャ。 – fuz

答えて

1

あなたがスタックから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ビットの数字を比較する場合は、最初に最上位バイトを比較する必要があります。ゼロフラグが設定されている場合は、両方のバイトが同一であることを意味します。この場合、次のバイトを最下位バイトまで、またはゼロフラグが設定されなくなるまで比較します。

関連する問題