平成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回繰り返す
[プログラム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日経過したスレッドへの投稿はできません。
広告