8085 マイクロプロセッサを使用して 2 つの 8 ビット符号付き数値を乗算するプログラムを作成しますか?
「」
オーグ100H
LXI H、2000H; HLペアを初期化してプロダクトを保存します
MOV A、M;最初の数値をアキュムレータにロードします
SBB B;アキュムレータから 2 番目の数値を減算します (ボローを使用)
MOV M、A;結果をメモリに保存する
DCXH; HLペアをデクリメントします
MOV A、M; 2 番目の数値をアキュムレータにロードします
B を追加します。最初の数値をアキュムレータに加算します (キャリーあり)
MOV M、A;結果をメモリに保存する
INX H; HLペアをインクリメントします
JMPループ;ループを繰り返す
ループ:CMP H、0; HL ペアをゼロと比較します
JNZループ;ゼロでない場合は、ループに戻ります
HLT;プロセッサを停止する
「」
説明
このプログラムは、8085 マイクロプロセッサの SBB (借入付き減算) および ADD (キャリー付き加算) 命令を使用して、2 つの 8 ビット符号付き数値を乗算します。
プログラムはまず HL ペアを初期化し、2 つの数値の積を保存します。次に、最初の数値をアキュムレータにロードし、そこから 2 番目の数値を (ボローを使用して) 減算します。これにより、最初の数値が 2 番目の数値より小さい場合はキャリー フラグが設定され、それ以外の場合はキャリー フラグがクリアされます。
次に、プログラムは結果をメモリに保存し、HL ペアをデクリメントします。次に、2 番目の数値をアキュムレータにロードし、最初の数値をそれに加算します (桁上げあり)。これにより、2 つの数値の合計が 255 より大きい場合はキャリー フラグが設定され、それ以外の場合はキャリー フラグがクリアされます。
次に、プログラムは結果をメモリに保存し、HL ペアをインクリメントします。次に、プログラムは LOOP ラベルに戻り、HL ペアがゼロに達するまでループを繰り返します。最後に、プログラムはプロセッサを停止します。
例
最初の数値が 10 で、2 番目の数値が 5 の場合、プログラムは 2 つの数値の積である 50 をメモリ位置 2000H に保存します。