• ベストアンサー

CASLについて質問です。

次の問題について教えてください。CASLの知識があまり無いのでできるだけやさしくしていただけると嬉しいです。 問題:GR1にセットされた番地から始まり、GR2で示される語数からなる領域中の数値のMAX,MINを求める。数値は-32768~32767の範囲の値とし、各1語に格納されている。結果はGR2にMAXを GR3にMINを設定する。領域は1語以上あるものとする。 以上です。よろしくおねがいします。   

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

;問題: ;GR1にセットされた番地から始まり、 ;GR2で示される語数からなる領域中の数値のMAX,MINを求める。 ;数値は-32768~32767の範囲の値とし、各1語に格納されている。 ;結果はGR2にMAXを GR3にMINを設定する。 ;領域は1語以上あるものとする。 MAIN START LAD GR1,DATA LD GR2,N CALL MAXMIN RET DATA DC 1452 DC 2254 DC -2456 DC 951 DC 1123 DC -1 DC 25478 DC 22554 DC 0 DC 9999 N DC 10 ;語数 END ; MAXMIN START LOOP LD GR0,0,GR1 GR0にデータの読み込み CPA GR0,MAX DATA<MAX JMI MINCHECK 現在の最大値と符号有りと見なして比べる ST GR0,MAX データの方が大きい時は最大値を更新 MINCHECK CPA GR0,MIN DATA>MIN JPL NEXT 現在の最小値と符号有りと見なして比べる ST GR0,MIN データの方が小さい時は最小値を更新 NEXT SUBL GR2,=1 調査した数を引く JZE RETURN 0になったら全て調べ終わった ADDL GR1,=1 アドレスを+1して次のアドレスにする JUMP LOOP 繰り返して調べる RETURN LD GR2,MAX それぞれの値をセットして LD GR3,MIN RET 呼び出し元に帰る MAX DC -32768 仮の最大値 MIN DC 32767 仮の最小値 END

zarusoba_2004
質問者

お礼

ありがとうございます。非常に参考になりました。

その他の回答 (1)

  • fortranxp
  • ベストアンサー率26% (181/684)
回答No.1

START LD GR0,GR1////GR1の示す番地のデータをGR0へ LAD GR1,1,GR1//GR1の示す番地を1つ進める    CPL GR1,GR2///GR1とGR2を比較 JZE END///////GR1=GR2なら終了 LD GR3,GR1////GR1が示す番地のデータをGR3へ CPA GR0,GR3////GR0とGR3のデータを比較 JPZ START//////GR0>=GR3ならSTARTへ LD GR3,GR0////小さいデータをGR3へ    JMP START 間違って居ましたら失礼!(CASLlしかやった事がない)

zarusoba_2004
質問者

お礼

ありがとうございます。非常に参考になりました。

関連するQ&A