3.演算命令
CASLでは算術命令、論理命令がそれぞれ用意されています。 |
|
|||
(1)ADDA 算術の加算命令 |
|
|||
記述方法 |
|
|||
ラベル |
ADDA |
r,アドレス[,x] |
|
|
rに格納されている値にアドレス番地の内容を加算し、rへ格納します。 プログラム例. |
|
|||
PRG_ADDA |
START |
|
|
|
|
LD |
GR0,DATA1 ;レジスタへデータを読み込む |
|
|
|
ADDA |
GR0,DATA2 ;GR0へDATA2の中身を加算 |
|
|
|
ST |
GR0,ANS ;結果をANSへ格納 |
|
|
|
RET |
;プログラム終了 |
|
|
DATA1 |
DC |
1 ;データを定義 |
|
|
DATA2 |
DC |
2 ;データを定義 |
|
|
ANS |
DS |
1 ;データ格納領域を確保 |
|
|
|
END |
|
|
|
|
||||
(2)ADDL命令 論理加算命令 |
|
|||
記述方法 |
|
|||
ラベル |
ADDL |
r,アドレス[,x] |
|
|
rに格納されている値にアドレス番地の内容を加算し、rへ格納します。 ADDA命令との違いは、符号(+ , -)なしとして処理します。 プログラム例. |
|
|||
PRG_ADDL |
START |
|
|
|
|
LD |
GR0,DATA1 ;レジスタへデータを読み込む |
|
|
|
ADDL |
GR0,DATA2 ;GR0へDATA2の中身を加算 |
|
|
|
ST |
GR0,ANS ;結果をANSへ格納 |
|
|
|
RET |
;プログラム終了 |
|
|
DATA1 |
DC |
1 ;データを定義 |
|
|
DATA2 |
DC |
2 ;データを定義 |
|
|
ANS |
DS |
1 ;データ格納領域を確保 |
|
|
|
END |
|
|
|
|
||||
(3)SUBA命令 算術減算命令 |
|
|||
記述方法 |
|
|||
ラベル |
SUBA |
r,アドレス[,x] |
|
|
r = r – アドレスの中身 プログラム例. |
|
|||
PRG_SUBA |
START |
GO から処理開始 |
|
|
DATA1 |
DC |
3 ;データ定義 |
|
|
DATA2 |
DC |
1 ;データ定義 |
|
|
ANS |
DS |
1 ;データ定義 |
|
|
GO |
LD |
GR2,DATA1 ;GR2にDATA1の中身を読み込む |
|
|
|
SUBA |
GR2,DATA2 ;GR2からDATA2の中身を減算 |
|
|
|
ST |
GR2,ANS ;結果をANSへ格納 |
|
|
|
END |
|
|
|
|
||||
(4)SUBL命令 論理減算命令 |
|
|||
記述方法 |
|
|||
ラベル |
SUBL |
r,アドレス[,x] |
|
|
r = r –アドレスの中身 プログラム例. |
|
|||
PRG_SUBL |
START |
GO から処理開始 |
|
|
DATA1 |
DC |
3 ;データ定義 |
|
|
DATA2 |
DC |
1 ;データ定義 |
|
|
ANS |
DS |
1 ;データ定義 |
|
|
GO |
LD |
GR2,DATA1 ;GR2にDATA1の中身を読み込む |
|
|
|
SUBL |
GR2,DATA2 ;GR2からDATA2の中身を減算 |
|
|
|
ST |
GR2,ANS ;結果をANSへ格納 |
|
|
|
END |
|
|
|
|
||||
(5)AND命令 論理積命令 |
|
|||
記述方法 |
|
|||
ラベル |
AND |
r,アドレス[,x] |
|
|
rとアドレスの中身で論理積を行い、結果をrへ格納します。 プログラム例(DATAの中身の1ビット目の情報を取り出すプログラム例) |
|
|||
PRG_AND |
START |
GO から処理開始 |
|
|
DATA |
DC |
#FFFF ;データ定義 |
|
|
MASK |
DC |
#0001 ;データ定義 |
|
|
ANS |
DS |
1 ;データ定義 |
|
|
GO |
LD |
GR2,DATA1 ;GR2にDATAの中身を読み込む |
|
|
|
AND |
GR2,MASK ;GR2とMASKの中身で論理積を行う |
|
|
|
ST |
GR2,ANS ;結果をANSへ格納 |
|
|
|
END |
|
|
|
|
||||
(6)OR命令 論理和命令 |
|
|||
記述方法 |
|
|||
ラベル |
OR |
r,アドレス[,x] |
|
|
rとアドレスの中身で論理和を行い、結果をrへ格納します。 プログラム例(DATAの中身とMASKの中身を重ねあわせるプログラム例) |
|
|||
PRG_AND |
START |
GO から処理開始 |
|
|
DATA |
DC |
#0FF0 ;データ定義 |
|
|
MASK |
DC |
#3001 ;データ定義 |
|
|
ANS |
DS |
1 ;データ定義 |
|
|
GO |
LD |
GR2,DATA1 ;GR2にDATAの中身を読み込む |
|
|
|
OR |
GR2,MASK ;GR2とMASKの中身で論理和を行う |
|
|
|
ST |
GR2,ANS ;結果をANSへ格納 |
|
|
|
END |
|
|
|
|
||||
(7)XOR命令 排他的論理和命令 |
|
|||
記述方法 |
|
|||
ラベル |
XOR |
r,アドレス[,x] |
|
|
rとアドレスの中身で排他的論理和を行い、結果をrへ格納します。 プログラム例(DATAの中身をビット反転させるプログラム例) |
|
|||
PRG_AND |
START |
GO から処理開始 |
|
|
DATA |
DC |
#1010 ;データ定義 |
|
|
MASK |
DC |
#FFFF ;データ定義 |
|
|
ANS |
DS |
1 ;データ定義 |
|
|
GO |
LD |
GR2,DATA1 ;GR2にDATAの中身を読み込む |
|
|
|
XOR |
GR2,MASK ;GR2とMASKの中身で排他的論理和を行う |
|
|
|
ST |
GR2,ANS ;結果をANSへ格納 |
|
|
|
END |
|
|
|
|
||||
|
||||
|
|
|
|
|