comet Ⅱで大文字小文字判定メモ猫
comet Ⅱ すごい
comet Ⅱはモデルアーキテクチャの一つで、一般性を失うことなく簡単化されている。つまり猫でもわかりやすい
今回はcomet Ⅱに対応するアセンブリ言語であるcasl Ⅱを用いて、入力装置から入力された文字が小文字だったら大文字に、大文字だったら小文字に変換し、出力装置に書き込む処理を実現したい(猫が)
かいてみる(猫が)
参考文献のp32のプログラムを参考に記述する
1 C_TRNS START 2 IN CA, CN 3 LD GR2, CA 4 LAD GR0, #0060 5 LAD GR1, #0020 6 CPA GR2, GR0 7 JPL StoL 8 ADDA GR2, GR1 9 JUMP WRITE 10 StoL SUBA GR2, GR1 11 WRITE ST GR2, CA 12 OUT CA, CN 13 RET 14 CA DS 256 15 CN DS 1 16 END
なんとなく理解する
IN, OUT
2行目と12行目で、それぞれ入出力装置からの入出力を行なっている。入力はキーボードなどから、出力はディスプレイなど、の解釈で良さそう?
3,4,5行目
3行目はレジスタ間ロード命令、4,5行目はロードアドレス命令。前者は入力領域CAをレジスタGR2へ転送していて、後者は#0060(文字定数'a'に対する文字コードよりも1だけ小さいデータ)と#0020(小文字データと大文字データの差)をGR0,GR1に格納している。
6~10行目
ここで比較、もし入力文字が#0060よりも小さければ、入力文字は大文字ということであるため、サインフラグがたち、JPLは実行されず、加算処理がなされ、小文字に変換される。
すごい
アセンブリはすごい
少し入門できました
参考文献
コンピュータアーキテクチャ 福本聡, 岩崎一彦 著