平成30年春期 午後問12 設問2

午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】
悪戦苦闘さん  
(No.1)
LD命令には、ふと、おやっと思うことが度々あり、頭が混乱しています。
例えば、
GR1には、文字領域の先頭アドレスが入っています。
LD GR6,GR1   → 文字領域の先頭アドレスをGR6にコピーする。
つまり、GR6には、データとして、アドレスが入っています。
ラベルLP内の
LD GR4,0,GR6   → GR6に入っているアドレスが示すデータ(1文字)をGR4にコピーする。
また、ラベルNUM内の
LD GR1,GR6   → GR6に入っているアドレスをGR1にコピーする。
といった具合です。
なぜ、
LD GR1,GR6   → GR6に入っているアドレスが示すデータををGR1にコピーする。
とは、ならないのでしょうか。
LD GR4,0,GR6は、指標レジスタ「0」が入っているから、0,GR6の部分が主記憶上のアドレスを示し、そのアドレスに格納されているデータと考え、
LD GR6,GR1やLD GR1,GR6は、レジスタ間のやりとりなので、GR6は元々レジスタに入っているデータ(アドレス)と考えるのでしょうか。どなたか考え方を教えてください。
よろしくお願いいたします。
2018.10.14 19:03
助け人さん 
FE ゴールドマイスター
(No.2)
問題用紙巻末の「アセンブラ言語の仕様」のロード命令を解釈します。

LD r1, r2  …  r1 ← (r2)
r1レジスタにr2レジスタの内容(データだろうがアドレスだろうが)をロード

LD r, addr [, x]  …  r ← (実効アドレス)
rレジスタにaddrまたはaddr, xのアドレスにある内容をロード

したがって、GR1の内容をGR0にロードするときは
LD GR0, GR1と書き、
GR1に入っているアドレスにある内容をGR0にロードするときは
LD GR0, 0, GR1と書きます。
2018.10.14 20:03
悪戦苦闘さん  
(No.3)
助け人さん、この度もありがとうございます。
また一つ、スッキリしました。
これからも納得がいくまで、粘り強く頑張ります。(^^)
2018.10.14 21:06

返信投稿用フォーム

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

その他のスレッド


Pagetop