演習課題「テキスト入力」
右の環境には、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