HOME»基本情報技術者試験掲示板»アセンブラ平成29年春
投稿する

アセンブラ平成29年春 [2997]

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

Pagetop