- ベストアンサー
大学の課題なんですが、答えを教えていただけないでしょうか?(CASLII)
大学の課題の答えを教えてください。 まず答えを教えてもらい、それを自分なりに解析して勉強しようと思います。答え無しでは、まったく何が何なのか分かりませんでした。 「記憶領域に確保された定数8を4乗した解をGR2に求めなさい」 よろしくおねがいします。 ・足し算と、引き算は「ADDA」という命令と「SUBA」という命令を使えば良いとわるんですが、「4乗」という命令はどうやって出すんですか?? ・定数を確保するには「DC」という命令を使うんですか??
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
答えを聞いて考えるより苦しんだほうが絶対身につきます。それに全部の答えを書くことは、この掲示板の規約違反の可能性があります。 なので、ヒントを書きます。 ・足し算と、引き算は「ADDA」という命令と「SUBA」という命令を使えば良いとわるんですが、「4乗」という命令はどうやって出すんですか?? 掛け算は、足し算を繰り返すことってのは理解されますか? 10×5なら10を5回加算することです。 だったら、4乗は8x8x8x8って事ですから、8x8を掛け算して、その答え同士を掛け算すると求める事が出来ます。 ・定数を確保するには「DC」という命令を使うんですか?? そうです。DCをつかいます。 これだけでは、答えにたどり着けないと思いますので参考サイト。 http://www016.upp.so-net.ne.jp/masuda2/casl2/index.html あとは、CASLIIのシミュレータで実際に動かして確認しましょう。
その他の回答 (2)
- rabbit_cat
- ベストアンサー率40% (829/2062)
「記憶領域に確保された定数8を4乗した解をGR2に求めなさい」 LAD GR2, 4096 DC 8 でいいような。。一応、記憶領域に定数8を作ってみた。
- zwi
- ベストアンサー率56% (730/1282)
>乗算には算術シフト命令(左)を使うようですね。 >上のプログラムをアセンブリすると「GR2」の値と8の4乗である「2048」は一致します。 8の4乗は、4096ですので間違っています。 それと、SLA......GR2,8では単に256倍してるだけですのでプログラムとして落第です。 乗算にシフトを使うのは掛け算の一つの方法ですが、意味が全然違います。シフトより簡単な足し算を繰り返す方法をお勧めします。参考サイトに両方の例が載っていますが、とりあえず足し算をループで繰り返す方法を理解してください。 プログラムとしては、8以外の数字の時もちゃんと4乗出来ないとまずいと思いますよ。
補足
なるほど。間違っている上に、プログラムとしての機能が無いんですね。おすすめいただいた足し算を繰り返す方法を頑張ってマスターします。 ありがとうございます。
お礼
ありがとうございます。リンクまで貼ってもらって。 自分で考えて見たんですが下記のようでは駄目でしょうか?? SAMP....START ........LD.......GR2,A ........SLA......GR2,8 ........RET A.......DC.......8 ........END 乗算には算術シフト命令(左)を使うようですね。 上のプログラムをアセンブリすると「GR2」の値と8の4乗である 「2048」は一致します。