- 締切済み
CASLの問題です。
初めての投稿です。 「アセンブラ言語を用いて掛け算をしなさい。」 という問題です。 調べてもわからないのでロジックと解説をお願いします!!
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- shigatsu
- ベストアンサー率26% (511/1924)
一応プログラマです。回答じゃないです。 「調べてもわからないので」だそうですが、CASLって参考書が大量にありますよね?問題集だってあるしその回答だってあります。 検索サイトで「CASL」「掛け算」で検索したら一発でヒットするんですが、本当に検索されました? 宿題って自分でやる事に意味があるんですよね?他人にやってもらって高得点取っても意味ないですよ。
- yoichiro-ito
- ベストアンサー率33% (2/6)
命令の使い方など、非常に自信ありませんがこんな風にすれば できたのではないでしょうか。情報処理試験の改訂により、 CASLの仕様も変わりましたが、私は新しいのは知りません。 START LD GR1,ZERO ;初期化 LD GR2,KAZU2 ;何回足し込むか LOOP ADD GR1,KAZU1 ;数1をGR1に足す SUB GR2,ICHI ;足し込む回数のカウンタ-1 JNZ LOOP ;カウンタ0でなければループ ST GR1,ANS ;答えをANSにストア ZERO DC 0 ;初期化用 ICHI DC 1 ;定数 KAZU1 DC 5 ;5×6をする KAZU2 DC 6 ANS DS 1 ;答え格納領域 END CASLシュミレータなどのソフトや、情報処理技術者試験の 参考書などを参考にされた方がよいと思います。 宿題なら、もう少しご自分で調べられた方がよいと思いますよ。 (tabが上手くいかなかったので、適当にスペースをいれてください。)
- arata
- ベストアンサー率49% (139/279)
CASLのような仮想言語の場合、実際のニーモニックを憶えていないので、ちゃんとしたコーディングで答える事ができませんが、 単純な方法は、掛ける回数だけ足す。 高等な方法は、2の何乗かを調べて、シフト命令を使って、その分の計算を行い、足りない分は加算する。 例えば、6×5の場合、 □6を5回加算する □5は、2の2乗+1なので、6を2ビットレフトシフトして(6×4)、から6を1回加算します。 といった方法を使うと思います。
補足
あのぉ、ロジックはどのようなものになりますか? 情報処理技術者試験程度の答えをお願いします。 レポートなんですが全く、手がつけれないのです。 よろしくお願いします。