平成27年春のアセンブラについて
名無しさんさん
(No.1)
アセンブラを選択しようと考え平成27年春のアセンブラに挑戦してみたのですがどうしてもCONTの部分を15回している理由とGR2を増やし続けている理由が分かりません
どなたかご教授ください
どなたかご教授ください
2016.10.10 15:16
通りすがりの者さん
(No.2)
この投稿は削除されました。(2016.10.10 21:51)
2016.10.10 21:51
通りすがりの者さん
(No.3)
まず、あまり自信がありませんので、ご容赦ください。
MULTは、GR0とGR2の掛け算ですが、足し算に変換して実行しています。
例えば、
GR0:0000 0000 0000 0101 (10進数の5)
GR2:0000 0000 0000 1010 (10進数の10)
の掛け算を、GR2の1のビットに着目して、GR0を8倍したものとGR0を2倍したもの、言い換えると、GR0を3ビット左にシフトしたものとGR0を1ビット左にシフトしたものを足すことによって求めます。
上記を例にとって説明すると、GR3を15から始めていますから、GR2を1ビット左にシフトすることを12回繰り返した時にGR2のビット15(先頭)が1になり、
JUMP LP
の後、
JZE FIN
JPL CONT
を通り抜けて、
LD GR4,GR1 ← GR4にGR1が入り、これはもとのGR0
SLL GR4,0,GR3 ← cの解答ウ GR3は3(CONTの12回繰り返しで12減っている)であるので、GR4を3ビット左にシフト
ADDL GRO,GR4 ← 0に初期化したGR0にGR4を加算
によって、まずGR0(=0)にもとのGR0の8倍が加算されます。
その後、さらにGR2を1ビット左にシフトすることを2回繰り返した時に、GR0にもとのGR0の2倍が加算されます。
このように、CONTの3行の中では、GR2の1のビットを探すために、1ビット左にシフトしながらビット15が1になるかどうかの検査を15回繰り返しています。
この問題の一部だけ見ましたが、とても難しいですね。果敢にチャレンジしてください
MULTは、GR0とGR2の掛け算ですが、足し算に変換して実行しています。
例えば、
GR0:0000 0000 0000 0101 (10進数の5)
GR2:0000 0000 0000 1010 (10進数の10)
の掛け算を、GR2の1のビットに着目して、GR0を8倍したものとGR0を2倍したもの、言い換えると、GR0を3ビット左にシフトしたものとGR0を1ビット左にシフトしたものを足すことによって求めます。
上記を例にとって説明すると、GR3を15から始めていますから、GR2を1ビット左にシフトすることを12回繰り返した時にGR2のビット15(先頭)が1になり、
JUMP LP
の後、
JZE FIN
JPL CONT
を通り抜けて、
LD GR4,GR1 ← GR4にGR1が入り、これはもとのGR0
SLL GR4,0,GR3 ← cの解答ウ GR3は3(CONTの12回繰り返しで12減っている)であるので、GR4を3ビット左にシフト
ADDL GRO,GR4 ← 0に初期化したGR0にGR4を加算
によって、まずGR0(=0)にもとのGR0の8倍が加算されます。
その後、さらにGR2を1ビット左にシフトすることを2回繰り返した時に、GR0にもとのGR0の2倍が加算されます。
このように、CONTの3行の中では、GR2の1のビットを探すために、1ビット左にシフトしながらビット15が1になるかどうかの検査を15回繰り返しています。
この問題の一部だけ見ましたが、とても難しいですね。果敢にチャレンジしてください
2016.10.10 21:55
通りすがりの者さん
(No.4)
この投稿は削除されました。(2016.10.13 15:16)
2016.10.13 15:16
名無しさんさん
(No.5)
お礼が遅くなってしまい大変申し訳ありません
やっと理解することができました、本当にありがとうございました。
やっと理解することができました、本当にありがとうございました。
2016.10.15 20:46
広告
返信投稿用フォーム
スパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。
広告