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