2016-11-13 10 views
0

i8080プロセッサ用のプログラムを用意する必要があります。私のプログラムは2つの16bの数字を掛けなければならない。しかし、私はビットごとに乗数をチェックする方法を知らない。 * 1011例えば1111アセンブラi8080 2つの16ビット数を掛け合わせる

= 1011の最初のビットが1であるので、私はので、私は11110 は3番目のビットが0ので、私は111100 などを追加しない追加1111 2番目のビットが1である1ので、私は1111000

を追加される追加します

結果は1111 + 11110 + 1111000 = 10100101

そして私の唯一の問題は乗数のビットをどのようにchceckですか?ヘルプ

答えて

1

ため

おかげで、おそらく最も簡単な方法は、そうでなければ、特にレジスタペアで、あなたのテストをビットとそれは難しい変更を維持する必要があり、右にシフトして、キャリーをチェックすることです。しかし、Aだけを回転させることができるので、シフトは8080で少し面倒です。のは、乗算器がBCであるとしましょう(とHLで被乗数とDEで結果ので、あなたがDAD Hと被乗数をシフトすることができ、それがアドオンに結果を行うには、いくつかのXCHGを取るが、それはあまり頻繁に発生する)

mov a, b 
ora a ; reset carry 
rar 
mov b, a 
mov a, c 
rar 
mov c, a 
jnc skipadd 
あなたは16でアンロール場合

mov a, b 
ora c 
jnz looptop 

あなただけの左シフトからのキャリーで左からBCを埋めることができます:ora aを使用して

がこのような終了テストを可能にする、乗数は、単にゼロになることを保証しますマルチそれは何の違いもありません。

関連する問題