アセンブラCASL2でバブルソートを作ってみた

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

<<関連記事>>

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

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

シミュレーターと過去問を解くまでの勉強に使った参考書はこちらです
平成26年秋の過去問にバブルソートが出題されました。

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

配列BUBに「CBEAD」という文字が入っています。
これを「ABCDE」と並び替えます。
CASL2ではAは41、Bは42…という文字コードが割り当てられていて、
その大小で比較します。

バブルソートは、簡単に言うと、
「おケツから頭に向かって、お隣さん同士、どっちが大きいかを
比較するアルゴリズム」です。

まず、この図ですと、
AとDはDの方が大きいから、このまま。

EとAは、Eの方が大きいから交換

BとAはBの方が大きいから交換

CとAはCの方が大きいから交換

これで、先頭のAの場所が決定しました。

もう一度、配列のおケツから同じように
交換して、今度はBを確定していきます。
この時の頭をGR1、おケツから交換するアドレスをGR2

おケツと比較する位置をGR3、
GR2の値をGR4、GR3の値をGR5
値交換に使う作業領域をGR6(TEMPなどと呼ばれる)にします。

外ループでGR1である頭からの位置、
内ループでおケツから交換していくGR2が変わっていきます。

内ループはGR2がGR1より小さくなったら抜けて、
外ループはGR1が最後尾まで行ったら抜けます。
配列の最後尾の位置をGR7とします。

実行して見ます。

「CBEAD」と入力します。

並び替え前の配列が出力されます。

並び替え後の配列が出力されます。

以下プログラムになります。

TEST START
RPUSH


IN BUB,LEN
OUT BUB,LEN

LAD GR7,BUB
ADDA GR7,=4
LAD GR1,BUB

LOOP1
LAD GR2,BUB
ADDA GR2,=4

LOOP2 LD GR3,GR2
SUBA GR3,=1
LD GR4,0,GR2
LD GR5,0,GR3
CPA GR4,GR5
JMI KOUKAN
JUMP SHORI

KOUKAN LD GR6,GR4
LD GR4,GR5
LD GR5,GR6
ST GR4,0,GR2
ST GR5,0,GR3

SHORI LAD GR2,-1,GR2
CPA GR2,GR1
JPL LOOP2

LAD GR1,1,GR1
CPA GR1,GR7
JMI LOOP1

OUT BUB,LEN
RPOP
RET
BUB DS 5
LEN DC 5
END

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

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

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

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

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

シミュレーターと過去問を解くまでの勉強に使った参考書はこちらです
平成26年秋の過去問にバブルソートが出題されました。

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

修了試験(午前免除)令和2年6月合格と午前勉強法

メインメニューへ
基本情報技術者試験トップへ
これからプログラミングをはじめる方へ
自己紹介
アロマでゴキブリを追い出せ!!

会場:リロ飯田橋
機関:独習ゼミ
会場に入る時に手指を消毒液で消毒しました。(トイレ等で一旦出た場合も)
コロナ対策で、机といすなどが消毒済みと書かれていました。

着席率は9割以上、長机の椅子1人1つでソーシャルディスタンスが
守られている状態。

問題用紙はB5版のホッチキス止め。
イメージ的には、PTAの冊子みたいな感じ。

試験翌日の6月15日、独習ゼミより結果が来ました。

結果:合格(80点満点中、70点 87.5%)
メールで、「2020秋/2021春免除資格【あり】」
と、メールが届きました。


感想としては、テクノロジ系は簡単、
マネジメント系は普通、ストラテジ系は難しい。

テクノロジ系は当日の朝に見直した問題が沢山出たので、
普段はそんなに得意分野でもないのですが、
今日は解けました。

自己採点の結果、
テクノロジ系…94% (47/50)
マネジメント系…70%(7/10)
ストラテジ系…80%(16/20)

午前免除の講評です。

こちらの講評によると、
A:簡単、B:ふつう、C:難しい
で、私が間違えた問題のレベルは、
A:2割、B:2割、C:6割でした。
つまり、頑張ったってことでしょうか。
気を抜かず、午後も頑張ります!!

それでは、午前の勉強法と使用教材、サイトを紹介します。

この本で、基本情報技術者試験午前分野の基礎体力が付けられます。
また、出題項目のランキングもあるので、
あまり時間の無い方でもじっくりと基礎体力が付く内容です。

この本を卒業したら、受験ナビ
「かんたん計算問題」と「厳選5題過去問」を納得いくまで解きました。
こちらでは、事前に練習しておかないと本番解けない頻出問題を
ユーモアある解説で楽しみながら学べました。

並行して、データベース分野で慣れれば得点源になりそうな
SQLを解きました。

午後の過去問で、比較的私がデータベースが得意(?)なのも、
この本のお蔭です。

アルゴリズムと言語(CASL2)と、SQLを中心に、午後試験も頑張ります。

最後に、私が間違えた問題を見直します。

テクノロジ系
問3(応用情報)
https://www.ap-siken.com/kakomon/21_haru/q2.html
問5(基本情報)
https://www.fe-siken.com/kakomon/19_aki/q56.html
問42(情報処理安全確保支援士)
https://www.sc-siken.com/kakomon/30_aki/am1_12.html

マネジメント系
問57(応用情報)
https://www.ap-siken.com/kakomon/28_aki/q57.html
問59(応用情報)
https://www.ap-siken.com/kakomon/31_haru/q60.html
問60(応用情報)
https://www.ap-siken.com/kakomon/22_haru/q59.html

ストラテジ系
問64(応用情報)
https://www.ap-siken.com/kakomon/31_haru/q64.html
問67(応用情報)
https://www.ap-siken.com/kakomon/25_aki/q66.html
問72(基本情報)
https://www.fe-siken.com/kakomon/23_toku/q71.html
問78(基本情報)
https://www.fe-siken.com/kakomon/16_aki/q75.html


メインメニューへ
基本情報技術者試験トップへ
これからプログラミングをはじめる方へ
自己紹介
アロマでゴキブリを追い出せ!!

平成27年春

この記事では、基本情報技術者試験の過去問を解いて、午前の点数と午後の学習ノートを公開しています。
字はかなり下手(でも汚くはないと思う。)ですが、午前87%、午後90%の一発合格ですので、もしかしたらお役に立てるかもしれません。

■ 関連記事 ■

基本情報技術者試験トップへ戻る
令和2年FE合格報告

アルゴリズム攻略法
午後試験対策おすすめ参考書
CBT試験
午前免除

◆ 午前 2020年6月13日(土)
  65/80…81点

テクノロジ系…39/51…76%
マネジメント系…9/10…90%
ストラテジ系…17/19…89%

◆午後

●セキュリティ

●ソフトウェア

●データベース

●ネットワーク

●ソフトウェア設計

●アルゴリズム

●アセンブラ

資格トップへ
基本情報技術者試験トップへ
これからプログラミングをはじめる方へ
息抜きに、写真で癒し(=^・^=)

アロマでゴキブリを追い出せ!!

メインメニューへ
これからプログラミングをはじめる方へ

保護者様向け子どもプログラミング
取りあえず事務職で働きたいから手っ取り早くExcel教えてくれ
急にプレゼン資料を作ることになったから手っ取り早くパワポ教えてくれ

夏でも冬でもゴキちゃん対策!!

この記事ではゴキブリ退治、追い出しに効果のあるアロマやホウ酸団子を紹介しています。

じめじめ、ムシムシの季節がやってまいりました。
恐怖の刺客、その名も正式名称は「ごきかぶり」。
それがいつの間にか「ゴキブリ」と呼ばれるようになりました。

文字を見るのも嫌なので、以下、ヤツラのコードネームをGと記述します。
Gが嫌がるスプレーを作る材料を紹介します。
殆どの材料が、この記事から購入できるようにしました。
第五世代移動通信システムこと5Gって見ると、んぎゃ~~~~ってなります( ;∀;)

【必須】【選択】【お好み】の3つに分けます。

用意するアロマは、


【必須】ベチバー

【必須】クローブ

次に、ミントとハッカ(日本ハッカ)は、どちらかお好きな方を選んでください。

【選択】ペパーミント

【選択】北見ハッカ通商

この香りが私は大好きです。
爽やかな感じで気分爽快です!!
お風呂にも数滴入れています。
ただ、使用前に必ずハッカの中蓋(ケースに入っています)を装着して下さい。
装着は簡単ですが、私は忘れてしまって、アロマオイルをこぼしてしまい、部屋中がハッカ臭くなってしまったことがありました。

【お好み】レモン

この香りも大好きです。
上のハッカとこのレモンは、洗濯にも使っています。
このアロマを開ける時は、手のひらの下の方がでアロマの蓋を押しながら反時計回りに回して開けます。慣れれば簡単です。

【必須】スプレーボトルです。

【必須】重曹を大さじ1杯ぐらい入れます。

【お好み】食器用洗剤を数回スプレーして入れます。

水を入れて良く振って出来上がりです!!

気になる所にスプレーしたり、
クイックルワイパーに沁み込ませたりして拭き掃除しています。

ウェットは、階段と廊下、キッチン、水回りに使っています。

ドライは、自分の部屋に使っています。

本体です。

アロマオイル以外では、クローブホールという物をティーパックに入れてGさんが来てほしくない所に置いています。

また、台所にはタニサケのゴキブリキャップを使っています。

名探偵コナンの目暮警部の役を演じている、茶風林さんがゴキゴローの声を担当されています。

このブログはプログラミングをメインのコンテンツにしています。
なんでそれでアロマGについての記事を書いたかと申しますと、
学習環境に出たら困るから、支障を来すから、自分でもすぐに
揃えられるように記事にしました。

宜しかったら下記のおすすめコンテンツにも遊びに来て下さいm(=^・^=)m

メインメニューへ
これからプログラミングをはじめる方へ

保護者様向け子どもプログラミング
取りあえず事務職で働きたいから手っ取り早くExcel教えてくれ
急にプレゼン資料を作ることになったから手っ取り早くパワポ教えてくれ

平成27年秋

この記事では、基本情報技術者試験の過去問を解いて、午前の点数と午後の学習ノートを公開しています。
字はかなり下手(でも汚くはないと思う。)ですが、午前87%、午後90%の一発合格ですので、もしかしたらお役に立てるかもしれません。

■ 関連記事 ■

基本情報技術者試験トップへ戻る
令和2年FE合格報告

アルゴリズム攻略法
午後試験対策おすすめ参考書
CBT試験
午前免除

◆ 午前 2020年6月12日(金)
  64/80…80点

テクノロジ系…41/50…82%
マネジメント系…7/10…70%
ストラテジ系…16/20…80%

◆午後

●セキュリティ

●ハードウェア

●データベース

●ネットワーク

●ソフトウェア設計

●アルゴリズム

●アセンブラ

資格トップへ
基本情報技術者試験トップへ
令和2年6月、午前免除を受けまし
息抜きに、写真で癒し(=^・^=)

13 CASL2アセンブラ、2進数に基数変換してみました。

この記事では、アセンブラ言語で「基数変換」についての簡単な例題が学べます。
今回は、13を0と1の2進数に変換するサブルーチンの例を掲載しております。
また、アセンブラの本の紹介もしています。

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

13を「0000000000001101」と表示するサブルーチンの出力結果です。

左に1ビットシフト(2倍)をして、1だったらオーバーフローするので、
JOVで’1’を表示する処理に分岐します。

GR1に13を設定しました。
GR2に出力用の配列の先頭アドレスを設定しました。
GR3にループカウンタを設定しました。
GR4を使って、配列ARRAYのGR2が指し示すアドレス位置の中身を操作します。 

そのイメージ図です。

サブルーチンのコードはコチラです。

TEST START
 RPUSH

 LAD GR1,13 ;2進数に変換したい数字をGR1に設定
 LAD GR2,ARRAY ;出力用配列ARRAYの先頭アドレスをGR2に設定
 LAD GR3,16 ;ループカウンタ

;<<配列に格納するループ>>
LOOP CPL GR3,=0 ;ループ終了条件。GR3と0を比較する
 JZE FIN ;ループカウンタがゼロになったらFINへ分岐
 SLL GR1,1 ;GR1に設定された数値を1ビット左へ(2倍した)
 JOV ONE ;シフトされた数がオーバーフローしたら(1だったら)ラベルONEに分岐

 LD GR4,='0' ;GR4に'0'を設定
 ST GR4,0,GR2 ;'0'を配列ARRAYに格納 
 JUMP SKIP ;次の処理の為にラベルSKIPに分岐する


ONE LD GR4,='1' ¡GR4に'1'を設定
 ST GR4,0,GR2 ;'1'を配列ARRAYに格納


SKIP LAD GR2,1,GR2 ;GR2のアドレスを1つ先に進める
 LAD GR3,-1,GR3 ;ループカウンタにしているGR3をデクリメントする
 JUMP LOOP ;ループの先頭に分岐する
;<<ループ ここまで。>>


FIN OUT ARRAY,LEN
 RPOP
 RET
ARRAY DS 16 ;配列ARRAYを用意
LEN DC 16 ;配列の出力文字数

 END

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

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

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

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

CASL2のおススメ本です。

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

遊歩道の桜です。

写真素材素材【写真AC】

 

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

フォトストック写真ACさんのプロフィールページ

自己紹介


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

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


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



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

午前免除試験

午後試験のオススメ本

スコアレポート

12 CASL2アセンブラで二重ループを使って階段を作ってみた。

この記事では、アセンブラ言語で1から9までの階段を作りながら、「二重ループ」と、「数値を数字に変換」を使った例を掲載しております。
インクリメントも利用して、階段を作ってみました。

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

過去問に取り組むまでのウォーミングアップにして頂けたら幸いです。
最初にこのサブルーチンの実行結果を表示します。

空の配列に、1を1つ、2を2つ…最後に9を9つ入れます。
1から9までの数値をGR1に設定します。

出力する配列にDANという名前を付けて、配列の先頭をGR2で指し示しました。
そのイメージです。

配列に格納する際、数値を数字にするのに「文字コード’0’」を加えています。
具体的には「1」を出力するのに、文字コードを「0031」にするので、文字コードが「0030」である’0’を加えております。
文字コードについては、こちらの記事が分かりやすいです。

文字コードを加算するのに、GR3を使いました。
1を1回、2を2回…9を9回と数字の分だけ配列に挿入する処理を繰り返す、内ループのカウンタをGR4にしました。
外ループでは、GR1で、1~9までインクリメントしています。

では、プログラミングです。

TEST START
 RPUSH
 LAD GR1,1; GR1に1を設定

LOOP1 LD GR3,GR1; 外ループ:LOOP1 文字出力用にGR3にGR1の値を読み込む
 LD GR4,GR1; 配列格納用にGR4にGR1の値を読み込む
 ADDL GR3,='0'; 数字を出力するのに文字コード’0’を加算する
 LAD GR2,DAN; 出力用の配列DANの先頭のアドレスをGR2に設定する


LOOP2 ST GR3,0,GR2 ;内ループ:LOOP2 数字を配列DANに格納する
 LAD GR4,-1,GR4 ;配列に出力する回数をデクリメント
 CPL GR4,=0 ;配列に出力する回数がゼロと等しいか
 JZE PRINTOUT ;数字を配列に格納する処理が終わったらラベルPRINTOUTに分岐する
 LAD GR2,1,GR2 ;配列の位置を次に進める
 JUMP LOOP2;内ループの先頭に分岐する 


PRINTOUT ST GR1,LEN; 配列の長さをLENに格納する
 OUT DAN,LEN; 配列を出力する
 LAD GR1,1,GR1; 次の数字を出力するのでインクリメントする
 CPL GR1,=9; 出力回数が9よりも大きいか比較
 JPL FIN; ↑の場合はFINへ分岐
 JUMP LOOP1; そうでない場合は外ループの先頭へ 


FIN RPOP
 RET

DAN DS 10;出力する配列を用意
LEN DS 1;出力する文字数

 END

では、実際にシミュレーターを動かして行きます。

外ループに入る前に、GR1に1が入りました。

<<外ループ LOOP1に入りました。>>

数値「1」を数字「’1’」に変換するのに使うGR3に1が入りました。

配列に格納する回数に使うGR4に1が入りました。

数字を出力するのに、’0’(文字コード0030)をGR3に加算されました。

出力用の配列の先頭アドレスがGR2に設定されました。
(実行環境によってアドレスは異なります。)

<<内ループ LOOP2に入りました>>

GR3の数字’1’(文字コード0031)が配列DANのGR2が指し示すアドレス(ここでは先頭アドレス)に格納されました。

配列に格納する残り回数であるGR4がデクリメントされました。

GR4の値がCPLで0と比較され、等しいのでゼロフラグが立ちました。

JZEより内ループを抜けて出力処理のラベルPRINTOUTに分岐しました。
文字数LENにGR1の値1が格納されました。

配列DANに格納された、’1’を出力しました。

次は2を出力するので、GR1がインクリメントされて2が入りました。

GR1に入っている2とCPLで9が比較され、2は9より小さいのでSFが立ちました。

<<外ループ LOOP1>>

外ループLOOP1の先頭に分岐しました。

文字コードを加算して数字に変換するのに使うGR3に2が入りました。

2を配列に格納する回数、2回を入れるGR4に2が入りました。

GR3に’0’(文字コード0030)が加算されて、0032になりました。

GR2に配列DANの先頭アドレスが設定されました。

<<内ループ LOOP2>>

GR3の数字’2’を配列DANのGR2が指し示すアドレスの所(この場合は先頭アドレス)に格納されました。

配列に格納される回数のGR4がデクリメントされました。

CPLで配列に出力される回数の残りGR4が0と等しいか比較され、この場合はGR4=1なので、分岐はしないで次に進みます。

配列のアドレスを1つ先に進めるので、GR2がインクリメントされました。

内ループの先頭に分岐します。


GR3に入った’2’が、GR2が指し示す配列のアドレス(この場合は先頭+1)の位置に格納されました。

配列に格納される回数であるGR4がデクリメントされました。

CPLでGR4の値が0と比較され、等しかったのでゼロフラグが立ち、内ループを抜け出力ラベルPRINTOUTに分岐します。


文字数ラベルLENに、GR1の値2が格納されます。

配列DANの「22」が出力されました。

次は3を出力するので、GR1がインクリメントされました。

CPLでGR1の3と9が比較され、まだ9回まで行っていないので、SFが立ちました。

外ループの先頭に行って、次は3が出力される処理になります。

あとは繰り返しなので、’9’が9回出力された直後まで進めます。
レジスタの値は、この様になっています。

GR1がインクリメントされます。

CPLでGR1が9と比較され、A(16進数の10)は9より大きいので、JPLでFINに分岐して、このサブルーチンは終わりました。

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

恵比寿ガーデンプレイス、フランスのクリスタルメーカー、バカラのシャンデリアです。

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

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

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

TEST START
 RPUSH
; GR1に1を設定

; 外ループ:LOOP1 文字出力用にGR3にGR1の値を読み込む
; 配列格納用にGR4にGR1の値を読み込む
; 数字を出力するのに文字コード’0’を加算する
; 出力用の配列DANの先頭のアドレスをGR2に設定する


;内ループ:LOOP2 数字を配列DANに格納する
;配列に出力する回数をデクリメント
;配列に出力する回数がゼロと等しいか
;数字を配列に格納する処理が終わったらラベルPRINTOUTに分岐する
;配列の位置を次に進める
;内ループの先頭に分岐する 


; 出力ラベルPRINTOUT 配列の長さをLENに格納する
; 配列を出力する
; 次の数字を出力するのでインクリメントする
; 出力回数が9よりも大きいか比較
; ↑の場合はFINへ分岐
; そうでない場合は外ループの先頭へ 


FIN RPOP
 RET

CASL2のおススメ本です。

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


恵比寿ガーデンプレイスです。

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

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

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

写真素材素材【写真AC】

 

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

フォトストック写真ACさんのプロフィールページ

自己紹介


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

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


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



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

午前免除試験

午後試験のオススメ本

スコアレポート

平成28年春

この記事では、基本情報技術者試験の過去問を解いて、午前の点数と午後の学習ノートを公開しています。
字はかなり下手(でも汚くはないと思う。)ですが、午前87%、午後90%の一発合格ですので、もしかしたらお役に立てるかもしれません。

■ 関連記事 ■

基本情報技術者試験トップへ戻る
令和2年FE合格報告

アルゴリズム攻略法
午後試験対策おすすめ参考書
CBT試験
午前免除

◆ 午前 2020年6月7日(日)
  64/80…80点

テクノロジ系…38/50…76%
マネジメント系…10/10…100%
ストラテジ系…16/20…80%

◆午後

●セキュリティ

●ソフトウェア

●データベース

●ネットワーク

●ソフトウェア設計

●アルゴリズム

●アセンブラ

資格トップへ
基本情報技術者試験トップへ
令和2年6月、午前免除を受けま
息抜きに、写真で癒し(=^・^=)

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】

 

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

フォトストック写真ACさんのプロフィールページ

自己紹介


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

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


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



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

午前免除試験

午後試験のオススメ本

スコアレポート

平成28年秋

この記事では、基本情報技術者試験の過去問を解いて、午前の点数と午後の学習ノートを公開しています。
字はかなり下手(でも汚くはないと思う。)ですが、午前87%、午後90%の一発合格ですので、もしかしたらお役に立てるかもしれません。

■ 関連記事 ■

基本情報技術者試験トップへ戻る
令和2年FE合格報告

アルゴリズム攻略法
午後試験対策おすすめ参考書
CBT試験
午前免除

合格報告

◆ 午前 2020年6月5日(金)
  63/80…78点

テクノロジ系…41/50…82%
マネジメント系…6/10…60%
ストラテジ系…16/20…80%

◆午後

●セキュリティ

●ソフトウェア

●データベース

●ネットワーク

●ソフトウェア設計

●アルゴリズム

●アセンブラ

資格トップへ
基本情報技術者試験トップへ
令和2年6月、午前免除を受けました
息抜きに、写真で癒し(=^・^=)