3 算術加算・減算

算術加算と減算は、データを16ビットの符号付整数として計算する。CASL II では加算と減算の命令が用意されているが乗除算は無い。

3.1 算術加算(ADDA)

3.1.1 内容

命令語 ADDA: ADD Arithmetic (add:加える arithmetic:算術)
役割 符号有り整数の加算を行う命令
書式と内容
ラベル欄  命令コード欄 オペランド欄    
label ADDA r1,r2   r1 $ \leftarrow$r1+r2
label ADDA r,adr[,x]   r $ \leftarrow$r+(adr+[x])の内容
       
FR 計算結果に応じて、変化する。
Flag bit 計算結果 ビットパターン
OF 1 結果$ \,<\,$-32768または32767$ \,<\,$結果 結果が16ビットを超えたとき
0 -32768$ \,\leqq\,$結果$ \leqq$32767 結果が16ビット以内
SF 1 結果が負の場合 第15ビットが1
0 結果が正の場合 第15ビットが0
ZF 1 結果がゼロの場合 全てのビットが0
0 結果がゼロ以外の場合 いずれかのビットが1
     


2個の16ビットの値を加算する命令である。16進数でも10進数でも正しく計算 できる。ただし符号付で計算を行うので、最上位の第15ビットは符号ビットを 表し、2の補数で表現される。

3.1.2

      ADDA  GR0,GR1      ;GR0←GR0+GR1
      ADDA  GR0,A        ;GR0←GR0+(アドレスAの内容)
      ADDA  GR0,A,GR1    ;GR0←GR0+(アドレス[A+GR1]の内容)
      ADDA  GR0,=5       ;GR0←GR0+5

3.2 算術減算(SUBA)

3.2.1 内容

命令語 SUBA: SUBtract Arithmetic (subtract:引き算 arithmetic:算術)
役割 符号有り整数の減算(引き算)を行う命令
書式と内容
ラベル欄  命令コード欄 オペランド欄    
label SUBA r1,r2   r1 $ \leftarrow$r1-r2
label SUBA r,adr[,x]   r $ \leftarrow$r-(adr+[x])の内容
       
FR 計算結果に応じて、変化する。
Flag bit 計算結果 ビットパターン
OF 1 結果$ \,<\,$-32768または32767$ \,<\,$結果 結果が16ビットを超えたとき
0 -32768$ \,\leqq\,$結果$ \leqq$32767 結果が16ビット以内
SF 1 結果が負の場合 第15ビットが1
0 結果が正の場合 第15ビットが0
ZF 1 結果がゼロの場合 全てのビットが0
0 結果がゼロ以外の場合 いづれかのビットが1
     


二つのデータの引き算を行う。その他は、加算命令と同じ。

3.2.2

      SUBA  GR0,GR1      ;GR0←GR0-GR1
      SUBA  GR0,A        ;GR0←GR0-(アドレスAの内容)
      SUBA  GR0,A,GR1    ;GR0←GR0-(アドレス[A+GR1]の内容)
      SUBA  GR0,=5       ;GR0←GR0-5

ホームページ: Yamamoto's laboratory
著者: 山本昌志
Yamamoto Masashi
平成16年9月7日


no counter