CASL U - 倍精度の加算処理
 前へ 目次へ 次へ

倍精度の加算処理

 倍精度(2語32ビット)の加算を行う副プログラムを作成する。
 データは次の図のように連続した2語で構成する。

 d = d1 + d2の計算でd1a番地とa+1番地、d2b番地とb+1番地、dc番地とc+1番地を使う。各データの先頭アドレスa, b, cはDATA番地から連続して定義する。このDATA番地をGR1に格納して副プログラムに渡す。

DATA GR1番地の内容 a番地
GR1+1番地の内容 b番地
GR1+2番地の内容 c番地

 手順は次の通りである。

けた上がり:キャリー(Carry)

  1. a+1番地の内容とb+1番地の内容を加算してc+1番地に格納する。
    1. GR1の内容(=a番地)をGR2に記憶する。 GR2=a番地。
    2. GR1+1の内容(=b番地)をGR3に記憶する。 GR3=b番地。
    3. GR1+2の内容(=c番地)をGR4に記憶する。 GR4=c番地。
    4. GR2+1番地の内容(=a+1番地の内容)をGR5に記憶する。
        GR5=a+1番地の内容
    5. GR3+1番地の内容(=b+1番地の内容)をGR5に加算する。
        GR5=a+1番地の内容+b+1番地の内容
    6. GR5の内容をGR4+1番地(=c+1番地)へ格納する。
  2. けた上がりがあれば1をセットし、なければ0をセットする。
      けた上がりがあればGR5に1を記憶する。なければ0を記憶する。
  3. けた上がりの分とa番地の内容とb番地の内容を加算してc番地に格納する。
    1. GR2番地の内容(=a番地の内容)をGR5に記憶する。
        GR5=a番地の内容
    2. GR3番地の内容(=b番地の内容)をGR5に加算する。
        GR5=a番地の内容+b番地の内容
    3. GR5の内容をGR4番地(=c番地)へ格納する。
MAIN1    START
         LAD     GR1, DATA
         CALL    BAISEIDO
         RET
DATA     DC      A
         DC      B
         DC      C
A        DC      #1111, #1111
B        DC      #2222, #2222
C        DS      2
         END
BAISEIDO START
         RPUSH
         LD      GR2, 0, GR1    ;i1. GR2=a番地.
         LD      GR3, 1, GR1    ;i2. GR3=b番地.
         LD      GR4, 2, GR1    ;i3. GR4=c番地.
         LD      GR5, 1, GR2    ;i4. GR5=GR2+1(a+1)の内容.
         ADDL    GR5, 1, GR3    ;i5. GR5=GR5+(GR3+1(b+1))の内容.
         ST      GR5, 1, GR4    ;i6. GR5の内容をGR4+1(c+1)番地に格納.
         JOV     CARRY          ;ii. けた上がり判定.
         LAD     GR5, 0         ;ii. けた上がりなし。GR5=0
         JUMP    KASAN          ;ii.
CARRY    LAD     GR5, 1         ;ii. けた上がりあり。GR5=1
KASAN    ADDA    GR5, 0, GR2    ;iii1. GR5=GR5+(GR2(a))の内容.
         ADDA    GR5, 0, GR3    ;iii2. GR5=GR5+(GR3(b))の内容.
         ST      GR5, 0, GR4    ;iii3. GR5の内容をGR4(c)番地に格納.
         RPOP
         RET
         END

 i4.〜i6.が下位の語の加算処理。iiがキャリー有無の判定。iii1.〜iii3.が上位の語の加算処理である。



課題1 倍精度(2語32ビット)の3つのデータを加算するプログラムを作成せよ。
 3つのデータはそれぞれx番地、y番地、z番地から2語分連続している。計算結果はd番地からの2語分の領域に格納する。
 レジスタの値は副プログラム呼び出し前と変わらないようにすること。
 



 前へ 目次へ 次へ
 CASL U Copyright © 2003  Hiroshi Masuda

 

 

inserted by FC2 system