dポイントプレゼントキャンペーン実施中!

CASL2のアセンブリ(?)で質問です

期末試験範囲であるCASL2に入って、とりあえずこんな問題が出るといわれました
教科書をいろいろ見ていますがちょっとよくわかりません
実際に問題とその解答をみてみると流れがわかるかと思い質問しました
(1)と(2)について答えとできれば解説をお願いしたいです。助けてください!



(1)整数AをN乗してGR0に格納するプログラムを作れ
 (オーバーフロウの時の対応等は必要なし)

(2)以下のプログラムが行っていることを説明して、ループ中に生じるGR1の変化を書き連ねなさい

1 PROGRAMX START
2 LD GR0,C1
3 XOR GR1,GR1 ;GR1とGR1の排他的論理和
4 LD GR2,COUNT
5 LOOP LD GR3,GR1
6 LD GR1,GR0
7 ADDL GR0,GR3 ;GR0,GR3の論理加算
8 SUBL GR2,C1 ;GR2とCR1の論理減算
9 JNZ LOOP
10 RET
11 C1 DC 1
12 COUNT DC 2
13 END


3行目のXORは単にGR1を0にするために演算される。7,8行目はは算術演算ADDA,SUBAでも問題ないのだが、ここで扱う値が正の整数であるから効率のよいものを使った。

A 回答 (2件)

(2)で行っているのはフィボナッチ数列ですね


ループ回数を増やすと
0,1,2,3,5,8,13,21,34
とGR1は増えていきます
    • good
    • 0

> (1)整数AをN乗してGR0に格納するプログラムを作れ



 AのN乗は1にAをN回掛けることです。
 ある数にAを掛けるというのは、0にその数をA回足すということです。

 したがって、後者のA回の加算処理をその結果に対してN回繰り返せば、AのN乗が求まります。
 後はCASL2命令によるコーディングだけなので自分でやってください。

> (2)以下のプログラムが行っていることを説明して、ループ中に生じるGR1の変化を書き連ねなさい

 2回ループして、GR0にはGR3の値を加算、GR1には1週前のGR0の値を代入、GR2はループカウントをカウントダウン、GR3は1周前のGR1の値を代入しています。
 GR1は、0(初期)、1(ループ1回目)、1(ループ2回目)と変化していますが、意味的に何を意図しているのかは不明です。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!