平成28年春期午後 問12 LOOP11について

ymp-aさん  
(No.1)
https://www.fe-siken.com/kakomon/28_haru/pm12.html
[プログラム1]
2行目  LOOP11  CALL  INPUT
5行目          ADDA  GR2,TOTAL,GR1
6行目          ST     GR2,TOTAL,GR1
              
5,6行目の内容が不安です。
ADDA  GR2,TOTAL,GR1  
  TOTAL+5(1115)番地の値0をGR2へ加算?
  (新規読込タイム+保存タイム)
ST    GR2,TOTAL,GR1  
  GR2の値をTOTAL+5(1115)番地へ書込み?
  合算タイムを上書き保存

私の理解力だと以下のようなイメージです。
LOOP11でやっていること
CALL  INPUTでGR0←1、GR1←チーム番号、GR2←タイムを読込
1~9の各チーム毎に8人のタイムを合算処理を行う
入力データがなくなるとGR0←-1でループ終了

5△2708を読込み時
27分08秒を秒へ変換→1628秒を2進数変換
GR1:アドレス1301番地      値5(10)  、   0000000000000101(2)
GR2:アドレス1302番地      値1628(10)、0000011001011100(2)

格納場所は5の部分
TOTAL  DC  0,0,0,0,0,0,0,0,0,0の左から6個目の領域にタイムを合算
           0,1,2,3,4,5,6,7,8,9(チーム)0番目の領域は使用しない

仮にアドレス番地を設定して
TOTAL(0)アドレス1110  値0
TOTAL(1)アドレス1111  値0
TOTAL(2)アドレス1112  値0
TOTAL(3)アドレス1113  値0
TOTAL(4)アドレス1114  値0
TOTAL(5)アドレス1115  値0000011001011100(2)
TOTAL(6)アドレス1116  値0
TOTAL(7)アドレス1117  値0
TOTAL(8)アドレス1118  値0
TOTAL(9)アドレス1119  値0
GR0      アドレス1300  値1か-1
GR1      アドレス1301  値チーム番号
GR2      アドレス1302  値一人のタイム
これを72回繰り返す

2021.02.04 13:23
関数従属さん 
FE ゴールドマイスター
(No.2)
>5,6行目の内容について

TOTALについては上記イメージで書かれている通り
配列のようなイメージになります。

配列の添え字がチーム番号であり、
値には当該チームのタイム合計値が保存される事になります。

TOTAL(0)アドレス1110  ・・・使用しない
TOTAL(1)アドレス1111  ・・・チーム1のタイム合計値
TOTAL(2)アドレス1112  ・・・チーム2のタイム合計値
TOTAL(3)アドレス1113  ・・・チーム3のタイム合計値
TOTAL(4)アドレス1114  ・・・チーム4のタイム合計値
TOTAL(5)アドレス1115  ・・・チーム5のタイム合計値
TOTAL(6)アドレス1116  ・・・チーム6のタイム合計値
TOTAL(7)アドレス1117  ・・・チーム7のタイム合計値
TOTAL(8)アドレス1118  ・・・チーム8のタイム合計値
TOTAL(9)アドレス1119  ・・・チーム9のタイム合計値

5,6行目は以下になるかと思います。

ADDA  GR2,TOTAL,GR1  
  TOTAL+GR1(チーム番号)のアドレス値(いままでのタイム合計値)とGR2(新規読込タイム)を加算し、GR2(新しいタイム合計値)に設定
ST    GR2,TOTAL,GR1  
  GR2(新しいタイム合計値)をTOTAL+GR1(チーム番号)のアドレス値に設定

>「私の理解力だと以下のようなイメージです」より以下の部分について

おおよそ認識通りかと思います。

尚、レジスタ(GR0,GR1,GR2等)はCPU内部に持っている
一時的な記憶領域であり、主記憶とは別のものとなります。
主記憶上のアドレスが振られているわけではありません。
2021.02.04 23:23
ymp-aさん  
(No.3)
>関数従属さん

どの命令の時、アドレス番地なのかアドレス値なのか分かりました。
レジスタに関しましてもありがとうございます!


2021.02.05 14:42

返信投稿用フォーム

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

その他のスレッド


Pagetop