重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

プログラミングCASL選択したのですがいくら考えても問題が解けません。解き方と回答を教えていただきたいです。長い質問ですみませんがよろしくお願いします。
2つのプログラムBCNT1 BCNT2はいずれも与えられた1語の中のビット値1の個数を数える副プログラムである。
1.処理対象となる1語の値はGR1に設定されて主プログラムから渡される。
2.副プログラムで数えたビット値1の個数はGR0に格納して主プログラムに戻る。
3.たとえばGR1に#00FEを設定して副プログラムBCNT1を呼び出すとGR0に#0007が返却される。副プログラムBCNT2も同様である。
(プログラムBCNT1)
(行番号)
101BCNT1START
102RPUSH
103a
104L10SLL GR1,1
105b
106JZE L12
107JUMP L10
108L11 ADDA GR0,=1
109JUMP L10
110L12RPOP
111RET
112END
      
(プログラムBCNT2)
(行番号)
201BCNT2START
202RPUSH
203a
204LAD GR3,#0001
205L20LD GR2,GR1
206AND GR2,GR3
207c
208ADDA GR0,=1
209L21d
210JNZ L20
211L22RPOP
212RET
213END


アLAD GR0,0イLD GR0,0ウLD GR1,GR
エPUSH 0,GR1オST GR0,0
 

アJMI L11イJMI L12ウJOV L11
エJOV L12オJPL L11カJPL L12


アJMI L21イJMI L22ウJNZ L21
エJNZ L22オJZE L21カJZE L22


アSLL GR1,1イSRL GR2,1ウSLL GR2,1
エSLL GR3,1

A 回答 (2件)

BCNT2のほうは、あまり見てないけど、BCNT1はホントに間違いないですかね。


103行目はGR0をクリアーする命令に間違いないと思いますので、「LAD GR0,0」でしょう。
このプログラムは、16回ループしなければなりませんから、この比較が必要です。
104行目を見ると、GR1を左論理シフトしてますから、シフトして無くなったビットが1なら、フラグレジスタOFに1がセットされます。
ということで、105行目は、「JOV L11」だと思うのですが、そうするとどこにも「16回ループしたか」を判定するところがありません。
変ですね・・・
    • good
    • 0
この回答へのお礼

お礼遅くなってすみません。回答していただきありがとうございます。
BCNT1見直しましたが間違いありませんでした。
CASL2は本屋さんにもほとんど置いてなくて、私は全くの初心者で通信教育はじめたのですがプログラミングになるとテキストいくら読んでもわからないのです。ましてや応用問題になると時間だけがすぎていきます。この問題で一ヶ月ぐらいすぎようとしています。
何かいい方法ありますか?

お礼日時:2008/02/27 19:26

CASL2シミュレータに実際の4通りのプログラムをぶち込んで実行、動作を解析、確認してみては?



Vector> ダウンロード> Windows> プログラミング> 情報処理用 CASL・COMET
http://www.vector.co.jp/vpack/filearea/win/prog/ …
    • good
    • 0
この回答へのお礼

お礼が遅くなってすみません。
回答していただきありがとうございます。
ただシミュレータがダウンロードできません~。私のやり方がおかしいと思うのですが残念です。

お礼日時:2008/02/27 21:17

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

今、見られている記事はコレ!