CASL U - 加算・減算命令とロードアドレス命令について
 前へ

加算・減算命令とロードアドレス命令について

 例えば、レジスタGR1に1を加算する場合、次の3通りの命令が考えられる。

@ ADDA    GR1, =1      算術加算命令
A ADDL    GR1, =1      論理加算命令
B LAD      GR1, 1, GR1   ロードアドレス命令

 どれを使ってもレジスタGR1の値は1増える。これら3つの違いは次のとおりである。

フラグFRの状態 @とAは計算結果によってフラグFRが変化する
Bは計算結果によってフラグFRは変化しない
データ範囲 @は−32768〜32767の範囲(負数あり
AとBは0〜65535の範囲(負数なし
使用メモリ量 @とAは(命令の分)+(定数の分)
Bは(命令の分)

 レジスタに1を加算する例で説明したが、1以外のデータでも同じである。また、加算以外の演算でも同じである。


使い分け

 ・数値データとして演算する。
 Bは基本的に演算命令ではないので除外する。(使わない方が良い)
 扱うデータ(必要なデータ範囲)によって、@またはAを選択する。

 ・アドレスとして加算する。
 アドレスには負数がないので@は除外する。(使わない方が良い)
 アドレスを1つずつ、2つずつ、というように定量的に増やしたり減らしたりする場合は、使用メモリ量の少ないBが良い。

命令 語長 備考
  LAD  GR1, 1, GR1  
  ADDL  GR1, =1
  DC   1

リテラルが自動的にDC命令に展開されるので、
合計3語となる。
  ADDL  GR1, DATA1
DATA1  DC  1

DC命令でデータ定義したプログラムと上のようにリテラルを使用した
プログラムと、メモリの使用量は同じである。
語長(メモリ使用量)はCOMETUの仕様書で想定されている命令語長である。

 例えば、ある領域のデータを順番にデータを調べたいとき、そのデータ領域の先頭アドレスをGR1に記憶しておきGR1を1ずつ加算してデータを別のレジスタ、例えばGR2に取り出して調べるには次のようにする。
    LD    GR2, 0, GR1    GR1番地のデータ取り出し。(0+GR1)番地の内容をGR2に格納する。
    LAD  GR1, 1, GR1    GR1番地に1を加算する。(1+GR1)をGR1に格納する。


 前へ
 CASL U Copyright © 2003  Hiroshi Masuda

 

 

inserted by FC2 system