アセンブラ平成29年春

午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】
回答ありがとうさん  
(No.1)
https://www.fe-siken.com/kakomon/29_haru/pm12.html

アセンブラの演算で
頭がこんがらがってきてしまい
わからなくなってしまったので
良ければ教えてください。

この問題では
64ビットで一つの数を表すという設定での
ひとつの数は重ならない連続する4つのアドレスを使用。

2つの数を加算する演算を行っていくために
プログラム1のなかで
ADDA GR0,0,GR3
ADDA GR0,0,GR4
というように同じ桁に相当する部分を加算していく。

桁あふれはGR5に退避させて
GR0にもどして
そのあとアドレスを違う桁にそれぞれ動かしていく…

となると思うのですが
読んでいるうちにこんがらってきてしまい

18,19行の
SUBL GR4,=1
SUBL GR3,=1


GR4のアドレスの値からマイナスをするようにも読めてしまいます。

レジスタ同士の演算のときはアドレスの値どうしを演算する、
レジスタとアドレス(リテラル含む)を演算するときは
レジスタのアドレスにたいして演算しているのでしょうか。

よろしくお願いします。
2021.03.03 12:05
回答ありがとうさん  
(No.2)
①ADDA GR0,0,GR4
0+GR4で求められるアドレスにある値とGR0の値を加算
②ADDA GR0,GR4
GR0とGR4の値を加算する。
という違いでしたね。
0が肝なのがきちんと読めていませんでした。
2021.03.03 12:15

返信投稿用フォーム

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

その他のスレッド


Pagetop