situmooon
@situmooon (situ mon)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

基本情報午後h21春問1アセンブラ

基本情報午後h21春問1アセンブラ

解き方がわからない、説明文が何を伝えたいかわからない

↓問1の説明文
〔プログラム1の説明〕
 リストに対して,要素を挿入又は削除する副プログラム LPROC である。リストの構造を図1に示す。

①リストは一つ以上の要素をもち,一つの要素は連続する2語から成る。1語目には次の要素の先頭アドレス(図中では矢印で表す)が,2語目にはその要素の保持する値が格納される。要素は主記憶の0番地以外に配置され,最後の要素の1語目には,次の要素がないことを表すために,0が設定される。
②ROOT は1語から成り,最初の要素(要素1)の先頭アドレスが格納される。
③主プログラムは,表1に示す値を各レジスタに設定して LPROC を呼ぶ。
nは操作対象とする要素が,リストの先頭から何番目かを指定する正の整数である。
要素の挿入の場合は,その要素が先頭からn番目となる位置(要素nの直前)に挿入される。削除の場合は,先頭からn番目の要素(要素n)が削除される。
nとして,リストの現在の要素の個数Nよりも大きい値が与えられたとき,LPROC は何もせずに呼出し元に戻る。
④LPROC は,要素を挿入又は削除するとき,それぞれ別に用意された副プログラム EGET 又は EFREE を呼ぶ。
⑤EGET は,挿入される要素に必要な領域を記憶管理領域から割り当てるために呼び出され,新たに割り当てられた,連続する2語から成る領域の先頭アドレスを GR2 に設定して呼出し元に返す。
⑥EFREE は,削除された要素の先頭アドレスを GR2 に設定して呼び出され,当該要索が使用していた領域を記憶管理領域に戻す。
⑦副プログラム EGET から戻るとき,GR2 以外の汎用レジスタの内容は元に戻す。
⑧副プログラム EFREE から戻るとき,汎用レジスタ GR1~GR7 の内容は元に戻す。
⑨副プログラム LPROC から戻るとき,汎用レジスタ GR1~GR7 の内容は元に戻す。

疑問点
リストに対して,要素を挿入又は削除する副プログラムLPROCの構造を示すらしんですがLPROCってなんですか?

リストは一つ以上の要素をもち,一つの要素は連続する2語から成るらしいですけど連続する2語からなったらどうなるんですか?

2語目にはその要素の保持する値が格納される。要素は主記憶の0番地以外に配置され,最後の要素の1語目には,次の要素がないことを表すために,0が設定されるらしんですけど、なんで2語目にはその要素の保持する値が格納されるんですか?要素ってどれが要素なんですか?次の要素がないことを表すために,0が設定されるのはなぜ?

ROOTは1語から成り,最初の要素(要素1)の先頭アドレスが格納されるらしいんですけど、なぜROOTは一語からなるんですか?最初の要素ってなんですか?どれに対していってるんですか?

主プログラムは,表1に示す値を各レジスタに設定してLPROCを呼のはなぜなんですか?問題に関係あるんですか?

nは操作対象とする要素が,リストの先頭から何番目かを指定する正の整数であるっていってますけど正の整数ってなんですか?nの操作対象とする要素ってなんですか?

わからないことだらけです

0

1Answer

リストに対して,要素を挿入又は削除する副プログラムLPROCの構造を示すらしんですがLPROCってなんですか?

LPROC は副プログラム の名前だと思います.

リストは一つ以上の要素をもち,一つの要素は連続する2語から成るらしいですけど連続する2語からなったらどうなるんですか?

素直に読むと,「リストの1つの要素が,2つの語である.」と書いてあるように読めます.
どうなるか → そういう状態であると決めました.ということを記載しているのだと思います.

例えば,下記のような状況ではないかと推測します.

リスト → [要素1, 要素2, ....]
要素N → [語1, 語2]

2語目にはその要素の保持する値が格納される。要素は主記憶の0番地以外に配置され,最後の要素の1語目には,次の要素がないことを表すために,0が設定されるらしんですけど、なんで2語目にはその要素の保持する値が格納されるんですか?要素ってどれが要素なんですか?次の要素がないことを表すために,0が設定されるのはなぜ?

図があるようですが,ここには無いので図示を試みます.


番地A : [語1 = 番地B(次の要素の番地), 語2 = 値X]  (要素1)
:
(中略)
:
番地B : [語1 = 0(最後の場合), 語2 = 値Y] (要素2)

↓↓↓↓
これを表現している

リスト : [要素1 → 値X, 要素2 → 値Y]
// 要素3 が無いことが 語1 に 0 が設定されていることからわかる.

ROOTは1語から成り,最初の要素(要素1)の先頭アドレスが格納されるらしいんですけど、なぜROOTは一語からなるんですか?最初の要素ってなんですか?どれに対していってるんですか?

前述の図で最後尾は 0 であることからわかるようになっています.
先頭が何かというのはわからないので,ROOT があります.
(例えば,番地A から見たら 番地B で最後とわかるが,逆に番地B の情報から見たらリストの先頭はわからない. = 情報としてリストの前にもどる情報がないため.)

番地A : [語1 = 番地B(次の要素の番地), 語2 = 値X]  (要素1)
:
(中略)
:
番地B : [語1 = 0(最後の場合), 語2 = 値Y] (要素2)
:
(中略)
:
番地C : [語1 = 番地A] (ROOT 要素)

↓↓↓↓
これを表現している

リスト : [要素1 → 値X, 要素2 → 値Y]
// 要素3 が無いことが 語1 に 0 が設定されていることからわかる.
// 要素1 が先頭であることが,ROOT 要素からわかる.

ROOT が 語1 しかなく,語2 が無い理由ですが,
あっても良いと思いますが,今回は問題をシンプルにするために ROOT は先頭の番地しか保持していない,
ということにした.(定義した) ということかと思います.

主プログラムは,表1に示す値を各レジスタに設定してLPROCを呼のはなぜなんですか?問題に関係あるんですか?

表が無いので推測になりますが,
前述の図のように,データが配置されていないと,そもそもリストをたどることができないので,
データを配置しているのではないでしょうか?

nは操作対象とする要素が,リストの先頭から何番目かを指定する正の整数であるっていってますけど正の整数ってなんですか?nの操作対象とする要素ってなんですか?

nは操作対象とする要素が,リストの先頭から何番目かを指定する正の整数である。
要素の挿入の場合は,その要素が先頭からn番目となる位置(要素nの直前)に挿入される。削除の場合は,先頭からn番目の要素(要素n)が削除される。

「正の整数」とは,$1, 2, 3, 4, 5, ...$ のような,
整数(not 少数) のうち $0$ より大きいものかと思います.

n の操作対象とする要素 とは LPROC が (挿入 / 削除) を行うプログラムですが,
対象となるリストのどの位置に (挿入 / 削除) を行うか,を差しているのだと思います.

リスト : [ 0, 1, 2, 3, 4, 5 ]
n : 3
削除

↓↓↓(結果の状態)

リスト : [ 0, 1, 3, 4, 5 ]

※問題の全文を読んでいる訳ではないので, n の位置がズレている可能性があります.

2Like

Your answer might help someone💌