HOME»基本情報技術者試験掲示板»平成30年春期 午後問12 設問2
投稿する

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

 悪戦苦闘さん(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
助け人さん(No.2) 
FE ゴールドマイスター
問題用紙巻末の「アセンブラ言語の仕様」のロード命令を解釈します。

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日経過したスレッドへの投稿はできません。
© 2010- 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop