演習課題「算術左シフトする」
右の環境には、CASLで、メモリからレジストに値を読み込むプログラムが作成してあります。 このファイルを修正して、以下の処理をしてください。
#1234を3ビット分、算術左シフトする
採点して、すべてのジャッジに正解すれば、演習課題クリアです!
※ 採点時は、下記のコマンドを実行してください。
~$ pycasl logic.cas
~$ pycomet -d logic.com
~$ s
~$ s
~$ s
~$ s
#08:シフト演算命令 - その1
COMETⅡのシフト演算命令について学習します。シフト命令は、レジスタの値を指定ビット分、移動させる命令です。まずは、算術シフト命令について理解しましょう。
$ pycasl logic.cas
$ pycomet -d logic.com
レジスタの値を指定ビット分、移動させる
- 算術シフト:符号ビットを含まずにシフトする
- SLA命令:左方向に算術シフト
- SRA命令:右方向に算術シフト
- 論理シフト:符号ビットを含めてシフトする
- SLL命令:左方向に論理シフト
- SRL命令:右方向に論理シフト
SLA SLA r, adr [, x]
- 符号ビットを含まずに、ビットパターンを左方向に移動
- 右側の空いたビットは「0」になる
- 左側のはみ出したビットは削除される
- 最後にはみ出したビットをOFにセット
- シフトする量を、実効アドレスで指定する
SLA GR0, 1 ; 1ビット左に算術シフト
SLA GR0, 2 ; 2ビット左に算術シフト
SRA SRA r, adr [, x]
- 符号ビットを含まずに、ビットパターンを右方向に移動
- 左側の空いたビットは、符号ビットと同じ値になる
- 右側のはみ出したビットは削除される
- 最後にはみ出したビットをOFにセット
- シフトする量を、実効アドレスで指定する
SRA GR0, 1 ; 1ビット右に算術シフト
SRA GR0, 2 ; 2ビット右に算術シフト
AAAA 1010 1010 1010 1010
SRA D555 1101 0101 0101 0101
SLA AAAA 1010 1010 1010 1010
CASLIIアセンブラ & シミュレータ PyCASL2 & PyCOMET2
http://www.image.med.osaka-u.ac.jp/member/nakamoto/pycasl2/index.html
CASL - Wikipedia
https://ja.wikipedia.org/wiki/CASL
アセンブラ言語CASLⅡの仕様
https://www.chiba-fjb.ac.jp/fjb_labo/casl/CASL2spec.html#2-3
システムCOMETⅡの仕様
https://www.chiba-fjb.ac.jp/fjb_labo/casl/COMET2spec.html
CPU - コンピュータの基礎知識 | ++C++; // 未確認飛行 C
https://ufcpp.net/study/computer/CPU.html