この記事ではアセンブラ言語で、文字コードの演算を使って、小文字から大文字に変換する処理を学べます。理解の助けになるように、シンプルな図解を用いております。
<この記事は書きかけです。>
この記事では、こちらのWebのシミュレーターを使っています。
ダウンロードすることなく、素早くアセンブラの勉強が出来る、私が使った中で1番便利なシミュレーターです。
2020年新型コロナウイルスが蔓延しています。
恐らく今年の流行語に入ろうであろう、「ソーシャルディスタンス」
英語で書くと「Social Distance」です。
大文字と小文字が交じっておりますが、この文字列を全部大文字に変換する
プログラムを作りました。
イメージはこちらです。
配列MOJIがあって、緑色の所が大文字に変換した所です。
0番目から14番目までの要素があります。
レジスタはGR1~GR3まで使い、それぞれの役割は、
GR1が「Social Distance」が格納されている配列の先頭アドレスから最後尾のアドレスまで、処理中の文字のアドレスを指し示し、
GR2は文字数の15で、ループカウンタとして使います。
GR3は、GR1が指し示すアドレスの中身、つまり処理中の文字そのものを指します。
最初の文字の ‘S’ は大文字なのでそのままです。
大文字のSの文字コードは「0053」です。
大文字の文字コードは小文字の文字コードよりも20小さいです。
例えば、’A’ は「0041」で、’a’は「0061」です。
文字コードが小文字の’a’の「0061」より小さい場合は大文字として判断するので、変換の処理は飛ばします。
‘a’以上で、’z’の「007A」以下の場合は大文字変換の対象になりますので、文字コードを20マイナスします。
文字コードについてはこちらの外部記事が分かりやすいです。
出力結果です。
プログラムはこちらです。
少しでも「密」を避けて、早くコロナが収まりますように、という願いを込めて作ってみました。
サブルーチンの中で、更にサブルーチンUPPER(大文字に変換するサブルーチン)を呼び出して、戻ってきたら大文字に変換した文字列を出力します。
TEST START
RPUSH
OUT MOJI,LEN
LAD GR1,MOJI;先頭番地指定
LD GR2,LEN
CALL UPPER;大文字変換プログラムを呼ぶ
OUT MOJI,LEN
RPOP
RET
MOJI DC ‘Social Distance’
LEN DC 15
UPPER RPUSH
LOOP LD GR3,0,GR1
CPL GR3,=’a’
JMI SONOMAMA
CPL GR3,=’z’
JPL SONOMAMA
SUBA GR3,=#20;大文字を小文字に変換
ST GR3,0,GR1
SONOMAMA LAD GR1,1,GR1
SUBA GR2,=1
JPL LOOP
RPOP
RET
END
お疲れ様でした。
ここで一旦、写真で休憩を挟みます。
瀬戸内しまなみ海道の海です。
撮影したのは平成15年(2003年)で、写ルンですで撮影した写真を復刻しました。
ここから、復習&アウトプットタイムです!!
下記のコードをシミュレーターにコピペして、コメントを頼りに先ほどのコードを覚えているか入力して見て下さい。
上手く動いたら、値などを好きなように変えて動かして見て下さい。
この復習は学習直後は勿論、明日など少し日を開けて行うと、更に効果的です!!
皆さま、大変お疲れ様でした。
この記事最後のブレイクタイムPhotoは・・・
しまなみ海道の夕暮れです。
自己紹介
アセンブラ自作サンプルへ
アセンブラ過去問プログラムへ
プログラミング未経験者はアセンブラと表計算どっち!?
基本情報技術者試験トップへ
午前免除試験
午後試験のオススメ本
スコアレポート