修了試験(午前免除)令和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は・・・

遊歩道の桜です。

 

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

自己紹介


アセンブラ自作サンプルと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アカウントを作成して頂くと、登録が ラク です♪

 

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

自己紹介


アセンブラ自作サンプルと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アカウントを作成して頂くと、登録が ラク です♪

 

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

自己紹介


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

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


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



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

午前免除試験

午後試験のオススメ本

スコアレポート

平成28年秋

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

■ 関連記事 ■

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

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

合格報告

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

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

◆午後

●セキュリティ

●ソフトウェア

●データベース

●ネットワーク

●ソフトウェア設計

●アルゴリズム

●アセンブラ

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

04 CASL2アセンブラ 番町皿屋敷で納涼ループ

この記事では、アセンブラ言語で簡単なループとインクリメントをして、番長皿屋敷のお皿の枚数を数える例題を掲載しております。

怪談話で有名な、「1ま〜い」、「2ま〜い」・・・と数えていくのは、プログラミングの基礎トレーニングになると思います。

世間では「地球沸騰化」、なんて言っていますね。
多分2023年のトレンドになるのではないでしょうか。

毎日暑いので、アセンブラの勉強では涼しくなりたいです。
そこで、怪談話を題材に、プログラミングをしてみようと思いつきました。
個人的には「番町皿屋敷」は、プログラミングの中でもループの勉強になると思います。

1ま~~~い、
2ま~~~い、

そう、ループとインクリメントです!
アセンブラCASL2を使って基本情報技術者試験対策も兼ねて
下記の結果になるプログラミングをしてみました。

LADとLDの違いについては、こちらの外部記事が分かりやすいです。

TEST START
 RPUSH

 LAD GR1,1;GR1に1を設定

;<< ここからループ >>
LOOP LD GR2,GR1;GR2にGR1の数を読み込む
 ADDL GR2,='0';GR2の値に文字コード「'0'」を加算
 ST GR2,SARA;GR2の値をSARAに格納
 OUT SARA,LEN;皿の枚数を出力
 LAD GR1,1,GR1;GR1をインクリメント
 CPL GR1,=10;GR1が10まで達したのか比較(ループを続けるか否かの判断)
 JMI LOOP;GR1が10未満であれば、ループは続行

 OUT MOJI,LEN2;「サラ割れた」のメッセージ出力

 RPOP
 RET

SARA DS 1;皿に文字数1枠を確保する
TANI DC 'MA-I';皿の単位の数え方は「枚(まーい)」
LEN DC 5;1枚は「1MA-I」と5文字で表示
MOJI DC 'SARA WARETA!';「皿割れた」の文字列
LEN2 DC 12;上記の皿の文字列の字数

 END

それでは、このサブルーチンを実行していきます。
まず、GR1に1を設定します。

GR1はループカウンタ用に使って、GR2は皿の枚数の出力用に使うので、GR1の値をGR2に写します。
GR2にGR1の値を読み込みます。

GR2の値を使って、「1まーい」と出力したいのですが、そのためには文字コードの理解が必要になります。

紛らわしいのですが、「’1’」の文字コードは「0001」ではなく、「0031」です。
つまり、OUT命令で「1」と出力したいのであれば、文字コードを踏まえて「+30」してから出力します。

そこで、ADDL命令でGR2に「’0’」を足しておりますが、CASL2での「’0’」の文字コードは「0030」です。

この辺りの説明が分かりにくい際には、CASL2の文字コードについてこちらの外部記事が分かりやすいです。

ST命令で文字列SARAにGR2の「+30」をした値を格納してOUT命令で右側のコンソールに出力しています。

STの文字数は1文字、単位の「MA-I」は4文字なので、LENには合わせて5文字分出力出来るように5と設定しています。

現在GR1は1枚なので、LADを使ってインクリメントして、GR1の値を「2」にします。


その、インクリメントの仕組みなのですが、

LAD GR1,1,GR1

で、GR1に「GR1の値+1番地」の値アドレス値を送ることによって、GR1自身に、1加算のインクリメントをしています。


この仕組みについては、先ほどのLDとLADの違いの外部記事が参考になり、ロードアドレス命令を用いた加算については、こちらの外部記事に掲載されています。

ちょっと面倒だな〜〜と思われた方は、ループでのインクリメントのテクニックなんだな、程度に軽く流してもらっても大丈夫です。

インクリメントによって、GR1の値は1から2に1つ増えました。
CPLで「10」と比較して、10よりも小さかったらJMIでLOOPに戻ります。

現在GR1の値は「2」であり、2は10より小さいので、フラグのSFがマイナスとなり、LOOPに戻ります。

このSFがマイナスになった仕組みですが、アセンブラでは比較の時に減算が行われます。

CPL GR1,=10;GR1が10まで達したのか比較(ループを続けるか否かの判断)

ここで、GR1が2なので、10と比較するために「2-10=マイナスの値」と計算されて、SFフラグがマイナスなので「1」になったという仕組みです。

それで、JMIでマイナスになったのでLOOPまで戻って、このループをGR1の値が10未満の間は繰り返されます。



あとは繰り返しなので、「9まーい」が出力される所まで進めます。
現在、「8まーい」まで出力されていて、コンソールの表示はこのようになっています。

レジスタの値は、このようになっています。
GR1が「9」なので、10未満の為SFフラグが1であり、LOOPまで戻ってきました。

GR2にGR1の値が読み込まれます。

GR2に「’0’」を加算することによって、文字コードが30足されます。
「0009」から「0039」になって、文字「9」が出力出来るようになりました。

ST命令で、文字「9」をSARAに格納します。

OUT命令でコンソールに「9まーい」が出力されました。

LAD命令でGR1がインクリメントされて、「9」から「A」になりました。
16進数では、Aは10です。

16進数が苦手な方は、こちらの外部記事が分かりやすいです。

CPLで10になったGR1と10が比較され、ここでも減算が用いられ、GR1-10=0なので、ゼロフラグが立って1になりました。

なので、JMIによる分岐は行われずにループを抜けました。

ループを抜けた所で、「皿割れた」のメッセージが出力されます。

最後の「SARA WARETA!」ですが、
これは、そのお皿が ”さらわれた”と、皿が割れたのダジャレです。

ちょっと怖かったですか(笑)

これで少しでも体感温度下がりましたら夏を乗り切れそうです。

お疲れ様でした。
ここで一旦、写真で休憩を挟みます。

千葉県の房総半島の外房、御宿の海です。


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

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

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

TEST START
 RPUSH

;GR1に1を設定

;<< ここからループ >>
;GR2にGR1の数を読み込む
;GR2の値に文字コード「'0'」を加算
;GR2の値をSARAに格納
;皿の枚数を出力
;GR1をインクリメント
;GR1が10まで達したのか比較(ループを続けるか否かの判断)
;GR1が10未満であれば、ループは続行

;「サラ割れた」のメッセージ出力

 RPOP
 RET

SARA DS 1;皿に文字数1枠を確保する
TANI DC 'MA-I';皿の単位の数え方は「枚(まーい)」
LEN DC 5;1枚は「1MA-I」と5文字で表示
MOJI DC 'SARA WARETA!';「皿割れた」の文字列
LEN2 DC 12;上記の皿の文字列の字数

 END


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

江ノ島の岩場です。
片瀬江ノ島駅から徒歩数分のところで船に乗れましたので、岩場まで行って来ました。

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

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

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

 

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

自己紹介


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

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


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



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

午前免除試験

午後試験のオススメ本

スコアレポート

モバイルバージョンを終了