演習課題「間違い探し」
右の環境には、CASLの足し算プログラムが作成してあります。しかし、何も計算せず終了してしまいます。このファイルを修正して、レジスタとメモリ間で足し算するようにしてください。
採点して、すべてのジャッジに正解すれば、演習課題クリアです!
※ 採点時は、下記のコマンドを実行してください。
~$ pycasl calc.cas
~$ pycomet -d calc.com
~$ s
~$ s
~$ s
#01:アセンブラ命令を理解しよう
CASLⅡのアセンブラ命令について学習します。そのために、CASLⅡとCOMETⅡの命令の種類についておさらいします。
$ pycasl hello.cas
$ pycomet -r hello.com
$ pycomet -d hello.com
機械語命令
- CPUを直接操作する命令
- 機械語に変換される
- 例:LD、ADDA、ST、RET
アセンブラ命令
- アセンブラに対して指示をする
- 開始アドレスや、ラベルを置き換える
- 例:START、END、DC、DS
マクロ命令
- あらかじめ用意されたプログラムを呼び出し
- 例:IN、OUT
プログラムの先頭を定義START [実行開始番地]
- 実行開始番地で、プログラムの実行を開始するアドレスを指定できる
- 実行開始番地を省略した場合は、STARTの次の命令から実行を開始する
- START命令の前のラベルは、このプログラムを他から呼び出す場合に指定する;テキスト出力
MAIN START BIGIN
LAD GR0, 10 ; ダミー
BIGIN OUT BUF,LEN
RET
BUF DC 'Hello World'
LEN DC 11
END
プログラム全体の終わりを定義END
- コードの末尾をあらわす
- RETの次からENDまでがデータ領域
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