演習課題「テキスト入力」
右の環境には、CASLのテキストを出力するプログラムが作成してあります。しかし、何も出力せず終了してしまいます。このファイルを修正して、キーボードから文字を入力して、それを出力するようにしてください。
採点して、すべてのジャッジに正解すれば、演習課題クリアです!
※ 採点時は、下記のコマンドを実行してください。
~$ pycasl hello.cas
~$ pycomet -d hello.com
~$ s
~$ hello paiza
~$ s
~$ s
#02:マクロ命令でキーボード入力しよう
CASLⅡのアセンブラ命令とマクロ命令を学習します。そして、データ領域を確保するDC命令・DS命令、キーボードから文字を入力するIN命令について理解します。
$ pycasl hello.cas
$ pycomet -d hello.com
データ領域に値を格納するDC      定数
- データ領域を確保し、そこに値を配置する
- 定数には、10進数・16進数・文字定数・ラベルを指定
  - 10進数:符号付き2進数 −32768 〜 32767
  - 16進数:4桁の16進数、先頭に「#」を付ける
  - 文字定数:文字数分の領域を確保し、文字データを格納する。アポストロフィで囲む
  - アドレス:ラベルに対応するアドレスを格納する
- 格納した値を読み込むには、ラベルを利用する;テキスト出力
MAIN    START
        OUT    BUF,LEN
        RET
BUF     DC     'Hello World'
LEN     DC     11
        END
データ領域を確保するDS      語数
- 語数は、10進数で記述する。指定した語数のメモリ領域を確保
- 値のアクセスは、ラベルを利用する; 足し算する
CALC    START
        LD      GR0, A
        ADDA    GR0, B
        ST      GR0, ANS
        RET
A       DC      03
B       DC      02
ANS     DS      01
        END
テキストを出力するOUT     出力領域, 出力文字長領域
- 割り当てられた出力装置に、文字データを書き出す
- 出力領域:文字定数が格納された領域のラベルを指定する
- 出力文字長領域:出力する文字数を格納する領域のラベルを指定; テキスト出力
MAIN    START
        OUT    BUF,LEN
        RET
BUF     DC     'Hello World'
LEN     DC     11
        END
テキストを入力するIN      入力領域, 入力文字長領域
- 割り当てられた入力装置から、文字データを入力する
- paizaラーニングでは、キーボードから文字を入力
- 入力領域:入力文字を格納する領域のラベルを指定
- 入力文字長領域:入力した文字数を格納する領域のラベルを指定; テキスト入力
MAIN    START
        IN     BUF, LEN
        OUT    BUF, LEN
        RET
BUF     DS     256
LEN     DS     1
        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