アセンブラCASL2でユークリッドの互除法を作ってみた。

この記事では、アセンブラ言語で「ユークリッドの互除法」について簡単な例題で学べます。
理解の助けになるように、シンプルな図解も用いております。また、アセンブラとアルゴリズムのの本の紹介もしています。

<<関連記事>>

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

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

疑似言語によるアルゴリズムをCASL2で再現してみたら、両方学べて
一石二鳥なのではと思い、今回は最大公約数を求める、「ユークリッドの互除法」を作ってみました。

GR1に66、GR2に42を設定して、
その最大公約数が6になることをプログラミングで確認します。
大きい方から小さい方を引いて、その数を
大きい方に代入して、最終的に両方の数が一致した値が、
最大公約数になるアルゴリズムです。

66の方が42より大きいので、
66-42=24をGR1に格納します。

今度は、24と42では、
42の方が大きいので、
42-24=18をGR2に格納します。

その次に、24と18では、24の方が大きいので、
24-18=6をGR1に格納します。

6と18では、18の方が大きいので、
18-6=12をGR2に格納します。

6と12では12の方が大きいので、
12-6=6をGR2に格納します。

最後にGR1とGR2が6で等しくなったので、
ループを抜けて、これを最大公約数とします。

実行結果です。

このプログラミングです。

TEST START
RPUSH

LAD GR1,66
LAD GR2,42

LOOP CPA GR1,GR2
JZE FIN
JMI NIHE
SUBA GR1,GR2
JUMP LOOP

NIHE SUBA GR2,GR1
JUMP LOOP

FIN ADDA GR1,=’0′
ST GR1,SUU
OUT SUU,LEN

RPOP
RET

SUU DS 1
MOJI DC ‘DESU’
LEN DC 5

END

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

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

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

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

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

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