これで仕事終わり?さいっこおおおお

ネコの気持ちになりきってのんびりと自由に技術メモを残していきます

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は実行されず、加算処理がなされ、小文字に変換される。

すごい

アセンブリはすごい

少し入門できました

参考文献

コンピュータアーキテクチャ 福本聡, 岩崎一彦 著