演習課題「算術加算する」
右の環境には、CASLで、メモリからレジストに値を読み込むプログラムが作成してあります。 このファイルを修正して、以下の計算をしてください。
算術加算
\#1111 + \#2222
採点して、すべてのジャッジに正解すれば、演習課題クリアです!
※ 採点時は、下記のコマンドを実行してください。
~$ pycasl calc.cas
~$ pycomet -d calc.com
~$ s
~$ s
~$ s
~$ s
演習課題「論理加算する」
右の環境には、CASLで、メモリからレジストに値を読み込むプログラムが作成してあります。 このファイルを修正して、以下の計算をしてください。
論理加算
\#1111 + \#2222
採点して、すべてのジャッジに正解すれば、演習課題クリアです!
※ 採点時は、下記のコマンドを実行してください。
~$ pycasl calc.cas
~$ pycomet -d calc.com
~$ s
~$ s
~$ s
~$ s
#03:算術加算と論理加算をやってみよう
算術加算命令と論理加算命令について学習します。算術加算は、符号付き2進数として加算をおこないます。論理加算は、符号なし2進数として加算をおこないます。
$ pycasl calc.cas
$ pycomet -d calc.com
算術加算:16ビットの符号付き2進数として加算をおこなう
- 演算範囲は、-32768(#8000) ~ 32767(#7FFF)
- 演算結果がこの範囲を超えると、OFが「1」になる
- レジスタ間の加算と、レジスタ・メモリ間の加算ができるADD Arithmetic ADDA r1, r2 r1 ← (r1) + (r2)
r, adr [, x] r ← (r) + (実効アドレス)
論理加算:16ビットの符号なし2進数として加算をおこなう
- 演算範囲は、0 ~ 65535(#FFFF)
- 演算結果がこの範囲を超えると、OFが「1」になる
- レジスタ間の加算と、レジスタ・メモリ間の加算ができるADD Logical ADDL r1, r2 r1 ← (r1) +L (r2)
r, adr [, x] r ← (r) +L (実効アドレス)
7FFF + 01 = 8000
32767 : 0111 1111 1111 1111
+ 1 : 0000 0000 0000 0001
--------------------------------
1000 0000 0000 0000
符号付き2進数 -32768 > OF = 1
符号なし2進数 32768 > OF = 0
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
CASLⅡの加算・減算命令の種類
https://arcanum.work/contents?id=14