11 アセンブラCASL2ループでドット、市松模様をお絵かき(=^・^=)

この記事では、アセンブラ言語で「多重ループ」を使った簡単なドット絵(市松模様)のサブルーチンと、おすすめの本の紹介を掲載しております。

この記事では、こちらのWebのシミュレーターを使っています。
ダウンロードすることなく、素早くアセンブラの勉強が出来る、私が使った中で1番便利なシミュレーターです。

COMET2のアセンブラのCASL2で、簡単なドット絵を作ってみたくて、
市松模様を作りました。
「X」の文字が入った2つの配列を使って、こんな感じに出力しました。

GR1が奇数の時は、配列 ODDA「X X X」と出力して、GR1の値が偶数の時は、配列 EVENA「 X X 」と出力し、交互に出力することで、市松模様を書いています。

GR1の値で振り分けて、市松模様を描くイメージ的は、こんな感じです。

GR1の値をラベルEVEN(偶数)とODD(奇数)に処理を振り分けています。
偶数か奇数かの判定は、GR1をGR2にコピーして、GR2を右に1ビットシフトして、オーバーフローすれば奇数、しなければ偶数にしています。

プログラムはこんな感じです。

TEST START
 RPUSH
 LAD GR1,1;GR1に1を読み込む

;<<市松模様の描画ループ>>
LOOP LD GR2,GR1;GR2にGR1をコピー
 SRL GR2,1;GR2を右に1ビットシフト
 JOV ODD;オーバーフローしたら奇数なので、ODDに分岐する

EVEN OUT EVENA,LEN;偶数だったら「 X X 」を出力
 JUMP SKIP;奇数の出力をスキップする
ODD OUT ODDA,LEN;奇数だったら「X X X」を出力
SKIP LAD GR1,1,GR1;GR1をインクリメント
 CPL GR1,=5;GR1を5と比較
 JPL FIN;5を超えた場合はFINへ分岐
 JUMP LOOP;ループ先頭へ分岐 

FIN RPOP
 RET

EVENA DC ' X X '
ODDA DC 'X X X'
LEN DC 5

 END

それでは、実際にシミュレーターを使って動かしていきます。

GR1に1が入りました。

GR2にGR1の値がコピーされました。

GR2の値が右に1ビットシフトして、1は奇数なのでオーバーフローしました。

ラベルODDに分岐して、配列ODDAが出力されました。

GR1をインクリメントしました。

GR1=2は、5より小さいのでサインフラグが立ちました

ループの先頭に戻ります。

GR1の値が、GR2にコピーされました。

GR2が右に1ビットシフトして、偶数でのでOFフラグは立ちません。

偶数なので、配列EVENAが出力出来ました。

GR1がインクリメントされて、3になりました。

GR1=3は5より小さいので、このままループを継続します。

この様に繰り返していって、市松模様が描画されました。

お疲れ様でした。
勉強のリフレッシュに、写真で息抜きを致します。

東京駅丸の内のシャンパンゴールドのイルミネーションです。

ここから、復習&アウトプットタイムです!!
下記のコードをシミュレーターにコピペして、コメントを頼りに先ほどのコードを覚えているか入力して見て下さい。

上手く動いたら、値などを好きなように変えて動かして見て下さい。

この復習は学習直後は勿論、明日など少し日を開けて行うと、更に効果的です!!

TEST START
 RPUSH
 LAD GR1,1;GR1に1を読み込む

;<<市松模様の描画ループ>>
;GR2にGR1をコピー
;GR2を右に1ビットシフト
;オーバーフローしたら奇数なので、ODDに分岐する

;偶数だったら「 X X 」を出力
;奇数の出力をスキップする
;奇数だったら「X X X」を出力
;GR1をインクリメント
;GR1を5と比較
;5を超えた場合はFINへ分岐
;ループ先頭へ分岐 

FIN RPOP
 RET

EVENA DC ' X X '
ODDA DC 'X X X'
LEN DC 5

 END

皆さま、大変お疲れ様でした。
この記事最後のブレイクタイムPhotoは・・・

東京駅です。

仕事や勉強のリフレッシュに、趣味で写真を撮っておりますので、宜しかったら フォトストック写真ACさん の投稿もご覧頂けますと、大変嬉しい限りでございます!!

こちら、無料の「ダウンロードユーザー」に登録して頂けると、無料で写真のダウンロードが可能になります。

※ 先にGoogleアカウントを作成して頂くと、登録が ラク です♪

写真素材素材【写真AC】

 

最後までご精読、誠にありがとうございました!!

自己紹介


アセンブラ自作サンプルとFE出題範囲のアリゴリズムへ

アセンブラ過去問プログラムへ


プログラミング未経験者はアセンブラと表計算どっち!?



基本情報技術者試験トップへ

午前免除試験

午後試験のオススメ本

スコアレポート

投稿者: nekosiestr

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