演習課題「ジャンプ 01」
右の環境には、CASLでメモリからレジスタにデータを読み込んで、足し算するプログラムを作成してあります。このファイルを修正して、以下の動作をするように修正してください。
採点して、すべてのジャッジに正解すれば、演習課題クリアです!
GR0の値と、CONDラベルの値が一致したら、足し算しないで、SKIPに分岐する
※ 採点前に下記のコマンドを実行してください。
$ pycasl calc.cas
$ pycomet -d calc.com
$ s
…
演習課題「ジャンプ 02」
右の環境には、CASLでメモリからレジスタにデータを読み込んで、足し算するプログラムを作成してあります。このファイルを修正して、以下の動作をするように修正してください。
採点して、すべてのジャッジに正解すれば、演習課題クリアです!
GR0の値が、CONDラベルの実行アドレスの値より大きかったら、足し算しないで、SKIPに分岐する
※ 採点前に下記のコマンドを実行してください。
$ pycasl calc.cas
$ pycomet -d calc.com
$ s
…
#09:比較命令で分岐してみよう
比較命令の使い方を学習します。フラグレジスタと組み合わせて、プログラムの処理を分岐させます。
| 命令 | 命令コード | オペランド | 
|---|---|---|
| 正分岐(Jump on PLus) | JPL | adr[,x] | 
| 負分岐(Jump on MInus) | JMI | adr[,x] | 
| 非ゼロ分岐(Jump on Non Zero) | JNZ | adr[,x] | 
| ゼロ分岐(Jump on ZEro) | JZE | adr[,x] | 
| オーバーフロー分岐(Jump on OVerflow) | JOV | adr[,x] | 
| 無条件分岐(unconditional JUMP) | JUMP | adr[,x] | 
命令                   書き方(命令コード、オペランド)    説明
算術比較                CPA  r1,r2                   r1 ← (r2)
ComPare Arithmetic          r,adr[,x]               r ← (実効アドレス)
論理比較                CPL  r1,r2                   r1 ← (r2)
ComPare Logical             r,adr[,x]               r ← (実効アドレス)
(r1)と(r2)、または(r)と(実効アドレス)を比較して、その結果によって、FRに次の値を設定する。
| 比較 | 比較 | FRの値 | 対応する分岐命令 | 
|---|---|---|---|
| 左が右より大きい | (r1)>(r2), (r)>(実効アドレス) | SF: 0, ZF: 0 | JPL | 
| 左と右が等しい | (r1)=(r2), (r)=(実効アドレス) | SF: 0, ZF: 1 | JZE | 
| 左が右より小さい | (r1)<(r2), (r)<(実効アドレス) | SF: 1, ZF: 0 | JMI | 
; ジャンプ
JUMP    START
        LD      GR0, A
        CPA     GR0, COND
        JPL     SKIP
        ADDA    GR0, B
SKIP    RET
A       DC      05
B       DC      02
COND    DC      03
        END
フラグとは - IT用語辞典 e-Words
http://e-words.jp/w/%E3%83%95%E3%83%A9%E3%82%B0.html
符号つき2進数
http://www.infonet.co.jp/ueyama/ip/binary/signedbin.html
符号付き整数型とは - IT用語辞典 e-Words
http://e-words.jp/w/%E7%AC%A6%E5%8F%B7%E4%BB%98%E3%81%8D%E6%95%B4%E6%95%B0%E5%9E%8B.html
CASLIIアセンブラ & シミュレータ PyCASL2 & PyCOMET2
http://www.image.med.osaka-u.ac.jp/member/nakamoto/pycasl2/index.html
CASL - Wikipedia
https://ja.wikipedia.org/wiki/CASL
アセンブラ言語CASL2の仕様
https://www.chiba-fjb.ac.jp/fjb_labo/casl/CASL2spec.html#2-3
システムCOMET2の仕様
https://www.chiba-fjb.ac.jp/fjb_labo/casl/COMET2spec.html
CPU - コンピュータの基礎知識 | ++C++; // 未確認飛行 C
https://ufcpp.net/study/computer/CPU.html