10アセンブラCASL2で「ソーシャルディスタンス」を大文字に変換

この記事ではアセンブラ言語で、文字コードの演算を使って、小文字から大文字に変換する処理を学べます。理解の助けになるように、シンプルな図解を用いております。

<この記事は書きかけです。>

この記事では、こちらの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は・・・

しまなみ海道の夕暮れです。

自己紹介


アセンブラ自作サンプルへ

アセンブラ過去問プログラムへ


プログラミング未経験者はアセンブラと表計算どっち!?



基本情報技術者試験トップへ

午前免除試験

午後試験のオススメ本

スコアレポート

投稿者: nekosiestr

プログラミング学習中のロスジェネ(就職氷河期世代)の発達障害者です。 宜しくお願いします。 趣味で写真を撮っています。 プログラミングは、GAS/HTML/CSS/JavaScript/jQuery/PHP、 発達障害は、自閉症スペクトラムASD/ADHD、その他双極性障害やHSP(5人に1人の繊細さん)などの生きづらさを抱えておりますが、それでも楽しく生きて行きたいです!! 写真は、以前はコンパクトデジカメ、現在は、OLYMPUSミラーレス一眼を使っています。