6.シフト演算命令
CASLではビットシフトを行う演算命令が用意されています。 シフト演算を組み合わせることによって掛け算や割り算を行うことができます。 |
|||
(1)SLA命令 算術左シフトを行う命令。 |
|||
記述方法 |
|||
ラベル |
SLA |
r,アドレス[,x] |
|
符号ビットはそのままで、rの中のデータをアドレスで指定したビット数、左にシフトします。 プログラム例. |
|||
PRG_SLA |
START |
|
|
|
LD |
GR0,DATA ;レジスタへデータを読み込む |
|
|
SLA |
GR0,2 ;左へ2ビットシフトする |
|
|
ST |
GR0,ANS ;結果をANSに格納 |
|
|
RET |
;プログラム終了 |
|
DATA |
DC |
#0008 ;データを定義 |
|
ANS |
DS |
1 |
|
|
END |
|
|
(2)SRA命令 算術右シフトを行う命令。 |
|||
記述方法 |
|||
ラベル |
SRA |
r,アドレス[,x] |
|
符号ビットはそのままで、rの中のデータをアドレスで指定したビット数、右にシフトします。 プログラム例. |
|||
PRG_SRA |
START |
|
|
|
LD |
GR0,DATA ;レジスタへデータを読み込む |
|
|
SRA |
GR0,2 ;右へ2ビットシフトする |
|
|
ST |
GR0,ANS ;結果をANSに格納 |
|
|
RET |
;プログラム終了 |
|
DATA |
DC |
#0008 ;データを定義 |
|
ANS |
DS |
1 |
|
|
END |
|
|
(3)SLL命令 論理左シフトを行う命令。 |
|||
記述方法 |
|||
ラベル |
SLL |
r,アドレス[,x] |
|
符号ビットを意識せず、rの中のデータをアドレスで指定したビット数、左にシフトする。 プログラム例. |
|||
PRG_SLL |
START |
|
|
|
LD |
GR0,DATA ;レジスタへデータを読み込む |
|
|
SLL |
GR0,2 ;左へ2ビットシフトする |
|
|
ST |
GR0,ANS ;結果をANSに格納 |
|
|
RET |
;プログラム終了 |
|
DATA |
DC |
#0008 ;データを定義 |
|
ANS |
DS |
1 |
|
|
END |
|
|
(4)SRL命令 論理右シフトを行う命令 |
|||
記述方法 |
|||
ラベル |
SRL |
r,アドレス[,x] |
|
符号ビットを意識せず、rの中のデータをアドレスで指定したビット数、左にシフトする。 プログラム例. |
|||
PRG_SRL |
START |
|
|
|
LD |
GR0,DATA ;レジスタへデータを読み込む |
|
|
SRL |
GR0,2 ;右へ2ビットシフトする |
|
|
ST |
GR0,ANS ;結果をANSに格納 |
|
|
RET |
;プログラム終了 |
|
DATA |
DC |
#0008 ;データを定義 |
|
ANS |
DS |
1 |
|
|
END |
|
|
|
|||
|
|
|
|