アセンブラCASL2で「配列の最大値と最小値」を作ってみた

この記事では、アセンブラ言語で「最大値と最小値」について簡単な例題で学べます。
シンプルな図解を用いています。また、アセンブラとアルゴリズムのの本の紹介もしています。

<<関連記事>>

基本情報技術者試験トップへ
アセンブラ自作サンプルへ
アセンブラ過去問プログラムへ
令和2年(令和3年1月)合格報告

2020年からの基本情報技術者試験は、言語とアルゴリズムの配点が高くなりました。
なので、プログラミング未経験の事務員の私は、非常に焦っていましたが、無事合格できました。
学習中のアウトプットを少し編集してお届けしております。

疑似言語によるアルゴリズムをCASL2で再現してみたら、両方学べて
一石二鳥なのではと思い、今回は「配列の最大値」を作って、一部改変して最小値も作りました。

HAIRETSUという名前の配列を作りました。
文字コードの値で大小を比較します。
Aなら41、Eなら45です。
要素0から要素4まで、
C,B,E,A,Dの順で入っています。

先頭の要素0であるCを仮の最大値として、
Cより大きかったら仮の最大値を更新して、
Cより小さかったらそのままにして、
Cと比較する要素を後ろに1つずつ移動します。

配列の先頭アドレスをGR1、
仮の最大値GR2に入れて、
GR1が指す配列の中身をGR3にします。

ループの終了条件として、
配列のおケツを超えたら終わるようにするので、
おケツの番地をGR4に入れます。

では、実行結果を見てみます。

「MAX=」
の=の後ろに最大値が出力されるようにします。
文字数は合計5文字です。

プログラムです。

TEST START
RPUSH


LAD GR1,HAIRETSU ;先頭アドレス
LD GR2,0,GR1 ;仮の最大値
LD GR4,GR1 ;配列おケツ
ADDA GR4,=4

LOOP LAD GR1,1,GR1 ;要素1番目以降に進める
CPA GR1,GR4 ;最後までチェック済か
JPL FIN
LD GR3,0,GR1 ;比較する要素の中身
CPA GR3,GR2 ;仮の最大値と要素の中身を比べている
JMI KAENAI ;仮の最大値の方が大きかったら変えないのでジャンプ
LD GR2,GR3 ;仮の最大値更新処理
KAENAI JUMP LOOP

FIN ST GR2,MAX ;仮の最大値を入れる
OUT MOJI,LEN

RPOP
RET

HAIRETSU DC ‘CBEAD’
MOJI DC ‘MAX=’
MAX DS 1
LEN DC 5

END

最後に、最大値ではなく、最小値を求めるように
改変します。

変更した所でポイントとなるのは、

赤枠の部分です。
あとは変数名とか細かい所を変えました。

最小値の実行結果です。

読んで下さってありがとうございました。

この記事を書くのに勉強になった本を紹介します。
多分この記事を読んで面白かったと思われた方は、
きっとハマると思います。

◆アルゴリズム問題がちゃんと解ける本
アルゴリズム学習の定番。
アルゴリズムが苦手で何とかしたい方におススメ

◆アルゴリズムはじめの一歩完全攻略
実際に作って学べます。
Javaを使っています。
私はJava初めてでしたが、
それでも、ハッシュ関数の所までは、
どうにかついていけました。
もっと頑張ります。

◆速習言語CASL2
CASL2、何それ、テーマパークの絶叫マシーン
みたいな名前だね、ぐらいだった私でも、入門書として楽しく読めた本です。

◆プログラミング入門CASL2
入門が卒業出来たら、ガシガシ例題解いて、
演習問題を解いて、力を付けたいという時に
読む本です。

基本情報技術者試験トップへ
アセンブラ自作サンプルへ
アセンブラ過去問プログラムへ
これからプログラミングを始める方へ