この記事では、アセンブラ言語の「配列や文字列の扱い」について簡単な例題で学べます。配列の添字と文字を対応づけている、簡易的な暗号文です。
<<関連記事>>
基本情報技術者試験トップへ
アセンブラ自作サンプルへ
アセンブラ過去問プログラムへ
令和2年(令和3年1月)合格報告
少し前に竹内涼真さんが出演されているアイスのCMを
見ました。
「クール、クーラー、クーリッシュ」っていうアレです。
TVのCMは、聴いているうちに、耳に残る上、
あのアイスの広告が、通勤電車にもあったので、
時々、「クール、クーラー、クーリッシュ」と、
独り言を言ってしまいます。
そこで、アイスをCOMET2のアセンブラ、CASL2で作ろうと思いました。
この様な配列があります。
![](https://nekosiestr77.xsrv.jp/wp-content/uploads/2020/08/1-1.png)
0番目はA、1番目はB、2番目はC…という風に
暗号を解読するような感じで、数値を文字に当てはめていきます。
例えば、ICEの「I」は8、「C」は2、「E」は4になります。
なので、最初は「8」を入力します。
![](https://nekosiestr77.xsrv.jp/wp-content/uploads/2020/08/2-2.png)
すると、「8」は文字コードで「38」なので、
レジスタに38と入ります。
![](https://nekosiestr77.xsrv.jp/wp-content/uploads/2020/08/3-2.png)
GR2に38と入りました。
これを8にする為には、
文字コード30の「0」を使って減算します。
![](https://nekosiestr77.xsrv.jp/wp-content/uploads/2020/08/4-1.png)
GR2が8になりました。
今度はこの8をアイスの「I」に変換します。
配列MOJIの先頭アドレスをGR3に入れます。
![](https://nekosiestr77.xsrv.jp/wp-content/uploads/2020/08/5-1.png)
GR3には配列MOJIの先頭アドレスが
ここでは1045と入りました。
![](https://nekosiestr77.xsrv.jp/wp-content/uploads/2020/08/6-1.png)
このアドレスを8加算(先頭アドレスから8だけ右に移動)すると、
「I」のアドレスになります。
![](https://nekosiestr77.xsrv.jp/wp-content/uploads/2020/08/8.png)
アドレス1045に8を加えて104Dになりました。
![](https://nekosiestr77.xsrv.jp/wp-content/uploads/2020/08/7-1.png)
レジスタGR4にIを納めます。
Iの文字コードは49です。
![](https://nekosiestr77.xsrv.jp/wp-content/uploads/2020/08/9.png)
この「I」を、出力用の配列DASUの先頭アドレスに格納します。
![](https://nekosiestr77.xsrv.jp/wp-content/uploads/2020/08/10.png)
格納済み文字数をGR1に設定します。
![](https://nekosiestr77.xsrv.jp/wp-content/uploads/2020/08/11.png)
この文字数が3になったらループを抜けて出力します。
同様に、ICEの残りの文字「C」は2、「E」は、4を入力して、
格納します。
![](https://nekosiestr77.xsrv.jp/wp-content/uploads/2020/08/12.png)
出力結果です。
暗号文みたいなプログラムを作ってみたいのと、
「クール、クーラー、クーリッシュ」がループしていたので、
これを作ってみました。
全然汎用性がないのですが、
アイスの売り上げに貢献出来るかも??
以下、プログラムになります。
![](https://nekosiestr77.xsrv.jp/wp-content/uploads/2020/08/13.png)
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月)合格報告