平成28年春期午後問12 CASLがわからないです

午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】
文系ちゃんさん  
(No.1)
https://www.fe-siken.com/kakomon/28_haru/pm12.html
ADDAやJMIなど基本的な用語の操作はわかった気がするのですが、いざ問題演習してみると全くわからないので、質問させていただきます。基本的すぎるかもしれませんが、ネット上に解説が少なく進めないので教えてください。

①LOOP11の4行目「ADDA GR2,TOTAL,GR1」とありますが、これは(GR1のTOTAL番目にあるデータ)+(GR2にあるデータ)の結果をGR2に上書きするということで合っていますか?ほかの方の質問で(TOTALのGR1番目にあるデータ)と説明されていて、そちらのほうが確かに意味は合うけどなんかいつものルールと違うような気がしました。深刻な思い違いなのでしょうか?

②データをすべて読み込み終えるとGR0が-1になり、LOOP11のJMIでIENDに飛びます。IENDでGR0が#7fffになり、LOOP12でGR0のデータがGR2にコピーされます。LOOP13で「CPA GR2,TOTAL,GR4」とあり、GR2が最大値であるためプラスにしかならないと思います。マイナスまたはゼロになることはどんな場合なんでしょうか。

理解度低すぎですみません。(今更ですが)表計算に変えるか検討するほど悩んでいるので、なにとぞよろしくお願いします。
2022.09.18 16:43
wrinklyさん 
(No.2)
>①LOOP11の4行目「ADDA GR2,TOTAL,GR1」とありますが、これは
>(GR1のTOTAL番目にあるデータ)+(GR2にあるデータ)の結果をGR2に上書きする
>ということで合っていますか?
違うと思います。
ADDA GR2,TOTAL,GR1 /* GR2 の内容にTOTAL+(GR1)番地の内容を加える。 */
ST GR2,TOTAL,GR1 /* GR2 の内容をTOTAL+(GR1)番地に格納 */
INPUT により、GR1 にはチーム番号、GR2 には読み込んだ個人データのタイム(秒数)が
2進数で設定されています。TOTAL+(GR1)番地には、チーム毎に個人データのタイム(秒数)
が集計されます。

>②データをすべて読み込み終えるとGR0が-1になり、LOOP11のJMIでIENDに飛びます。
>IENDでGR0が#7fffになり、LOOP12でGR0のデータがGR2にコピーされます。LOOP13
>で「CPA GR2,TOTAL,GR4」とあり、GR2が最大値であるためプラスにしかならないと
>思います。マイナスまたはゼロになることはどんな場合なんでしょうか。
ここでは、チームの集計タイムが最小となるチームの最小タイム値とチーム番号を
順番に比較して決定しています。
GR2は最小タイム値で、初期値は#7FFF(最大値)ですが、TOTAL+(GR4)番地の内容
(各チームの集計タイム)と比較して小さければ入れ替えられます。
(GR1にその時点の最小チーム番号を保存します。 LD GR1,GR4)
GR4はチーム番号で、9 --> 1 まで変えながら繰り返して比較します。
最終的に、GR2に集計タイムが最小となるチームの最小タイム値、GR1に集計タイムが
最小となるチームのチーム番号が格納されます。
あとは、平均タイムを算出し(8で割る。3ビット右にシフト。SRL GR2,3)、OUTPUTで
出力します。
2022.09.19 15:49
文系ちゃんさん  
(No.3)
wrinklyさん

こんにちは、返信頂きありがとうございます。難しいと思っていたものがスッキリ分かるようになりました!感謝です!
2022.09.19 19:36

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。

その他のスレッド


Pagetop