この記事では、アセンブラ言語の「配列や文字列の扱い」について簡単な例題で学べます。配列の添字と文字を対応づけている、簡易的な暗号文です。
<<関連記事>>
基本情報技術者試験トップへ
アセンブラ自作サンプルへ
アセンブラ過去問プログラムへ
令和2年(令和3年1月)合格報告
少し前に竹内涼真さんが出演されているアイスのCMを
見ました。
「クール、クーラー、クーリッシュ」っていうアレです。
TVのCMは、聴いているうちに、耳に残る上、
あのアイスの広告が、通勤電車にもあったので、
時々、「クール、クーラー、クーリッシュ」と、
独り言を言ってしまいます。
そこで、アイスをCOMET2のアセンブラ、CASL2で作ろうと思いました。
この様な配列があります。
0番目はA、1番目はB、2番目はC…という風に
暗号を解読するような感じで、数値を文字に当てはめていきます。
例えば、ICEの「I」は8、「C」は2、「E」は4になります。
なので、最初は「8」を入力します。
すると、「8」は文字コードで「38」なので、
レジスタに38と入ります。
GR2に38と入りました。
これを8にする為には、
文字コード30の「0」を使って減算します。
GR2が8になりました。
今度はこの8をアイスの「I」に変換します。
配列MOJIの先頭アドレスをGR3に入れます。
GR3には配列MOJIの先頭アドレスが
ここでは1045と入りました。
このアドレスを8加算(先頭アドレスから8だけ右に移動)すると、
「I」のアドレスになります。
アドレス1045に8を加えて104Dになりました。
レジスタGR4にIを納めます。
Iの文字コードは49です。
この「I」を、出力用の配列DASUの先頭アドレスに格納します。
格納済み文字数をGR1に設定します。
この文字数が3になったらループを抜けて出力します。
同様に、ICEの残りの文字「C」は2、「E」は、4を入力して、
格納します。
出力結果です。
暗号文みたいなプログラムを作ってみたいのと、
「クール、クーラー、クーリッシュ」がループしていたので、
これを作ってみました。
全然汎用性がないのですが、
アイスの売り上げに貢献出来るかも??
以下、プログラムになります。
TEST START
RPUSH
LAD GR1,0 ;出力用配列に格納する場所と格納文字数
LOOP IN KEY,LEN ;文字に変換する数字入力用
LD GR2,KEY
SUBA GR2,=’0′ ;文字から数値に変換
LAD GR3,MOJI
ADDA GR3,GR2 ;変換した数値分右に移動
LD GR4,0,GR3
ST GR4,DASU,GR1
LAD GR1,1,GR1
CPA GR1,=3
JZE FIN
JUMP LOOP
FIN
OUT DASU,LEN2
RPOP
RET
KEY DS 1
LEN DC 1
MOJI DC ‘ABCDEFGHIJ’
DASU DS 3
LEN2 DC 3
END
読んで下さってありがとうございました。
この記事を書くのに勉強になった本を紹介します。
多分この記事を読んで面白かったと思われた方は、きっとハマると思います。
◆アルゴリズム問題がちゃんと解ける本
アルゴリズム学習の定番。
アルゴリズムが苦手で何とかしたい方におススメ
◆アルゴリズムはじめの一歩完全攻略
実際に作って学べます。
Javaを使っています。
私はJava初めてでしたが、
それでも、ハッシュ関数の所までは、
どうにかついていけました。
もっと頑張ります。
◆速習言語CASL2
CASL2、何それ、テーマパークの絶叫マシーン
みたいな名前だね、ぐらいだった私でも、入門書として楽しく読めた本です。
◆プログラミング入門CASL2
入門が卒業出来たら、ガシガシ例題解いて、
演習問題を解いて、力を付けたいという時に
読む本です。
<<関連記事>>
基本情報技術者試験トップへ
アセンブラ自作サンプルへ
アセンブラ過去問プログラムへ
令和2年(令和3年1月)合格報告