アセンブラCASL2で「線形探索」を作ってみた

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

<<関連記事>>

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

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

疑似言語によるアルゴリズムをCASL2で再現してみたら、両方学べて
一石二鳥なのではと思い、今回は「線形探索」を作ってみました。

HAIRETSUという名前の配列を作りました。
文字コードの値で大小を比較します。
Aなら41、Eなら45です。
要素0から要素5まで、Xは先頭から何番目か
(先頭を0として、どれだけ離れているか)を求めます。

この配列の先頭をGR1、おケツをGR5に設定します。

先頭からおケツまで移動するアドレスをGR2とします。
GR2は、今チェックしている配列のアドレスです。
その、今チェックしているアドレスの中身をGR3に入れます。
探す文字XをGR4に格納します。

GR2を移動していきながら、
Xと等しいか調べていきます。
GR2の中身であるGR3と、Xが入っているGR4を
比較していきます。
調べている位置のGR2がおケツのGR5より大きくなった場合と、
調べている場所の中身のGR3とXが入っているGR4が等しくなったら
ループを抜けます。

ループを抜けて、見つかった位置は、先頭からどれだけ
離れているか計算して、その距離を文字に変換して、
ICHIに格納して、「X=位置」の形で出力します。

出力結果です。

プログラミングです。

TEST START
RPUSH


LAD GR1,HAIRETSU ;先頭アドレス
LAD GR2,HAIRETSU ;配列の先頭からおケツまでの移動アドレス
LD GR5,GR1 ;配列おケツ
ADDA GR5,=5 ;おケツは先頭から「5」の距離
LD GR4,=’X’ ;GR4に探すべき値、Xを入れる

LOOP
LD GR3,0,GR2 ;比較する要素の中身
CPA GR3,GR4 ;今調べている値はXか?
JZE FIN ;等しかったらループを抜ける
LAD GR2,1,GR2 ;調べる配列を1つ先に進める
CPA GR2,GR5 ;最後までチェック済か
JPL FIN
JUMP LOOP

FIN SUBA GR2,GR1 ;見つかった位置は先頭からどれだけ離れているか
ADDA GR2,=’0′ ;距離を文字に変換
ST GR2,ICHI ;先頭からの距離をICHIに入れる
OUT MOJI,LEN

RPOP
RET

HAIRETSU DC ‘CBEAXD’
MOJI DC ‘X=’
ICHI DS 1
LEN DC 3

END

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

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

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

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

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

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

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

投稿者: nekosiestr

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