09 アセンブラCASL2で推しのライブまでの日数をカウントダウン!!

この記事ではアセンブラ言語で、単純なループとデクリメントを通してカウントダウンの処理が学べます。

過去問でも分岐命令JPL(比較対象の数よりも大きい場合に分岐)なども出てきましたので、過去問前の腕試しに読んで頂けたら嬉しいです。

推しのライブまで後何日かといったことを求めるサブルーチンを作ってみました。

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


まず、OUT命令で「Enter your favorite name(推しの名前を入力)」と出力します。
その後、INとOUT命令で、あなたの推しの名前を入出力します。


推しのライブまでの日数を5days、4days、3days、2daysまでカウントダウンして、
その後「1-DAY!! TOMORROW」、「DAISUKI!!」と出力します。

日数が5,4,3,2,とカウントされ行き2日までは、day”s”ですよね、複数形で。
「days.」という日数の単位も含めて出力しております。

ここから、プログラムの一部である、ループの部分を抜粋をします。
GR1を日数の5から1までのループカウンタに使います。

ループに入る前に、ループカウンタGR1に5を読み込みます。

日数をDAYSに格納して出力する際、5を出力する場合は、’5’の文字コードは「0035」です。

GR2に’0’(文字コード0030)を読み込んで、GR1の5とGR2の「0030」を加算して、GR2を「0035」にすることによって出力しています。

出力の際、ST命令でDAYSに格納してOUT命令で出力しています。

文字コードについてはこちらの外部記事が分かりやすいです。

;<<ここからループ>>

LOOP LD GR2,='0' ;GR2に'0'を読み込む
 ADDL GR2,GR1 ;出力する為、文字コード'0'(0030)が入っているGR2にGR1を加算
 ST GR2,DAYS ;ST命令でGR2の日数をDAYSに格納する
 OUT DAYS,LEND ;OUT命令でDAYSに入っている日数を出力
 SUBL GR1,=1 ;GR1をデクリメント
 CPL GR1,=1 ;GR1の値と1を比較 ココ注目!!
 JPL LOOP ;GR1が1より大きい間はループを繰り返す ココ注目!!

;<<ループここまで>>

上記のコードの抜粋部分の下から2つ目と1番下の、ココ注目!! と書いてある箇所をご覧下さい。

日数5、4、3、2までは、日数(GR1)>1ですよね。

そこで、CPL命令を使ってGR1のカウンタの値と1を比較し、ライブまでの日数>1、つまり2日まででしたら、ループを繰り返すという命令にしました。

JPLで、1と比べてPLUSでしたらLOOPへジャンプして分岐しています。

分岐命令についてはこちらの外部記事が分かりやすいです。

カウントダウンして、ライブ前日である日数が1日になったらループを抜けます。
ループを抜けた後は、「明日」の出力と、推しへの愛を込めて「DAISUKI!!」と出力します。

では、プログラム全てです。

TEST START
 RPUSH

 OUT NAME,LEN ;OUT命令で「Enter your favorite name(推しの名前を入力)」を出力
 IN OSHI,LENO ;IN命令で推しの名前を入力
 OUT OSHI,LENO ;入力した名前を出力

 LAD GR1,5 ;GR1に5を読み込む(GR1をループカウンタに使用)

;<<ここからループ>>

LOOP LD GR2,='0' ;GR2に'0'を読み込む
 ADDL GR2,GR1 ;出力する為、文字コード'0'(0030)が入っているGR2にGR1を加算
 ST GR2,DAYS ;ST命令でGR2の日数をDAYSに格納する
 OUT DAYS,LEND ;OUT命令でDAYSに入っている日数を出力
 SUBL GR1,=1 ;GR1をデクリメント
 CPL GR1,=1 ;GR1の値と1を比較
 JPL LOOP ;GR1が1より大きい間はループを繰り返す

;<<ループここまで>>

 OUT DAY1,LEND1 ;OUT命令であと1日と出力
 OUT MSG,LENM ;OUT命令で推しに「DAISUKI!!」と出力


 RPOP
 RET

NAME DC 'Enter your favorite name!';文字列「Enter your favorite name!」
LEN DC 25 ;その文字数
OSHI DS 256 ;推しの名前の領域を確保
LENO DS 256 ;推しの名前の文字数の領域を確保
DAYS DS 1 ;日数の領域を確保
LEND DC 7 ;日数の文字数
DAYCOUNT DC 'days.' ;出力する日数の単位
DAY1 DC '1-DAY!! TOMORROW!!' ;あと1日の文字列
LEND1 DC 18 ;あと1日の文字数
MSG DC 'DAISUKI!!' ;文字列「DAISUKI!!」
LENM DC 9 ;その文字数

 END

では、実際に動かしてみます。
推しの名前は「山田太郎(TARO.YAMADA)」とします。

「推しの名前を入力して下さい」と英文で出力します。

早速、「TARO.YAMADA」と入力します。

(このシミュレーターでは、入力とともにコンソールに表示されます。)

推しの名前を出力します。

GR1にループカウンタの5が入りました。

<<ここからループです。>>

GR2に文字コードの’0’である「0030」が読み込まれました。

GR2に「0030」とGR1の「0005」が加算され、「0035」になりました。

ST命令で「0035」である’5’がDAYSに格納されました。

コンソールに「あと5日」の出力をしました。

GR1をデクリメントして4が入りました。

GR1の値(現在4)と1を比較します。

1より大きいので、ループの先頭に戻ります。

———-

GR2に文字コードの’0’である「0030」が読み込まれました。

GR2に「0030」とGR1の「0004」が加算され、「0034」になりました。

ST命令で「0034」である’4’がDAYSに格納されました。

コンソールに「あと4日」の出力をしました。

GR1をデクリメントして3が入りました。

GR1の値(現在3)と1を比較します。

1より大きいので、ループの先頭に戻ります。

———-

GR2に文字コードの’0’である「0030」が読み込まれました。

GR2に「0030」とGR1の「0003」が加算され、「0033」になりました。

ST命令で「0033」である’3’がDAYSに格納されました。

コンソールに「あと3日」の出力をしました。

GR1をデクリメントして2が入りました。

GR1の値(現在2)と1を比較します。

1より大きいので、ループの先頭に戻ります。

———-

GR2に文字コードの’0’である「0030」が読み込まれました。

GR2に「0030」とGR1の「0002」が加算され、「0032」になりました。

ST命令で「0032」である’2’がDAYSに格納されました。

コンソールに「あと2日」の出力をしました。

GR1をデクリメントして1が入りました。

GR1の値(現在2)と1を比較します。

1と等しいので、ZF(ゼロフラグ)が立ちました。

<<ループはここまで>>

ループを抜けました。

「あと1日、ついに明日」と出力されました。

「大好き!!」、と出力されました。

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

日暮里駅から徒歩数分の、「夕やけだんだん」です。
東京下町の観光地、谷根千、谷中銀座付近の観光スポットです。


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

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

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

TEST START
 RPUSH

;OUT命令で「Enter your favorite name(推しの名前を入力)」を出力
;IN命令で推しの名前を入力
;入力した名前を出力

;GR1に5を読み込む(GR1をループカウンタに使用)

;<<ここからループ>>

;GR2に'0'を読み込む
;出力する為、文字コード'0'(0030)が入っているGR2にGR1を加算
;ST命令でGR2の日数をDAYSに格納する
;OUT命令でDAYSに入っている日数を出力
;GR1をデクリメント
;GR1の値と1を比較
;GR1が1より大きい間はループを繰り返す

;<<ループここまで>>

;OUT命令であと1日と出力
;OUT命令で推しに「DAISUKI!!」と出力


 RPOP
 RET

NAME DC 'Enter your favorite name!';文字列「Enter your favorite name!」
LEN DC 25 ;その文字数
OSHI DS 256 ;推しの名前の領域を確保
LENO DS 256 ;推しの名前の文字数の領域を確保
DAYS DS 1 ;日数の領域を確保
LEND DC 7 ;日数の文字数
DAYCOUNT DC 'days.' ;出力する日数の単位
DAY1 DC '1-DAY!! TOMORROW!!' ;あと1日の文字列
LEND1 DC 18 ;あと1日の文字数
MSG DC 'DAISUKI!!' ;文字列「DAISUKI!!」
LENM DC 9 ;その文字数

 END

アセンブラCASL2のおススメ本です。

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

谷根千の招き猫です。

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

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

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

 

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

自己紹介


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

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


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



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

午前免除試験

午後試験のオススメ本

スコアレポート

08 アセンブラCASL2で関東地方の観光地巡り

この記事ではアセンブラ言語で、入力された数値によって処理を分岐させ、関東地方の有名な観光地の名称を出力するサブルーチンを作りました。

JNZなどの分岐命令では過去問でも見かけましたので、過去問に取り組む前の腕試し的に読んで頂けましたら幸いです。

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

実行して、

「1」を入力すると「YOKOHAMA(横浜)」
「2」を入力すると「SKYTREE(東京スカイツリー)」
「3」は「ONJYUKU(御宿おんじゅく・・・千葉県房総半島の外房の海辺の町)」
「4」は「ODAIBA(お台場)」

と出力されるように致しました。

場所をLOCATE、LENの後の番号はそれぞれの場所の文字数、場所2以降はL2などのラベルに分岐しております。

該当しない場合は、ラベルOTHERの所で1-4のキーの入力を促すメッセージを出力します。

コードはこちらです。

TEST START
 RPUSH

 IN LOCATE,LEN ;観光地の番号を入力する
 LD GR1,LOCATE ;GR1に入力した観光地の番号を読み込む
 CPL GR1,='1' ;GR1と番号'1'を比較
 JNZ L2 ;等しくなければL2に分岐する
 OUT LOCATE1,LEN1 ;1であれば「YOKOHAMA」と出力
 JUMP FIN ;ラベルFINに分岐

L2 CPL GR1,='2' ;ラベルL2ではGR1と'2'を比較する
 JNZ L3 ;等しくなければL3に分岐する
 OUT LOCATE2,LEN2 ;2であれば「SKYTREE」をと出力
 JUMP FIN ;ラベルFINに分岐

L3 CPL GR1,='3' ;ラベルL3ではGR1と'3'を比較する
 JNZ L4 ;等しくなければL4に分岐する
 OUT LOCATE3,LEN3 ;3であれば「ONJYUKU」と出力
 JUMP FIN ;ラベルFINに分岐

L4 CPL GR1,='4' ;ラベルL4ではGR1と'4'を比較する
 JNZ OTHER ;等しくなければOTHERに分岐する
 OUT LOCATE4,LEN4 ;4であれば「ODAIBA」と出力
 JUMP FIN ;ラベルFINに分岐

OTHER OUT NOTHING,LEN5 ;ラベルOTHERでは文字列NOTHINGと文字数LEN5で出力 

FIN  RPOP
 RET

LOCATE DS 256 ;場所の領域を確保
LEN DC 1 ;文字数1文字
LOCATE1 DC 'YOKOHAMA' ;最初の場所横浜
LEN1 DC 8 ;横浜の文字数
LOCATE2 DC 'SKYTREE' ;2番目の場所スカイツリー
LEN2 DC 7 ;スカイツリーの文字数
LOCATE3 DC 'ONJYUKU' ;3番目の場所御宿
LEN3 DC 7 ;御宿の文字数
LOCATE4 DC 'ODAIBA' ;4番目の場所お台場
LEN4 DC 6 ;お台場の文字数
NOTHING DC 'PREASE ENTER 1-4' ;1から4までを入力するようにメッセージ
LEN5 DC 16 ;その他の場合の文字数


 END

シミュレーターを動かして見ます。
インプットボックスで「1」と入力します。

このシミュレーターでは入力するとコンソールに表示されます。

‘1’、文字コード「0031」がGR1に入ります。
※ 1の文字コードは「0001」ではなく「0031」です。
文字コードについてはこちらの外部記事が分かりやすいです。

CPLでGR1が’1’と等しいか比較します。
等しいのでZE(ゼロフラグ)が立ちました。

JNZで等しくない場合はラベルL2に分岐します。
今回は等しいので分岐はせずに進みます。

OUT命令で、YOKOHAMAが出力されました。

その後FINラベルに分岐してプログラムが終了しました。

同様に、2,3,4も入出力して見ます。

では、次は1-4以外の、例えば’8’などを入力してその動きをトレース致します。

GR1に文字コード「0038」が入りました。

GR1は’1’と等しくないのでラベルL2に分岐します。

GR1は’2’とも等しくないのでL3に分岐します。

GR1は’3’とも等しくないのでL4に分岐します。

GR1は’4’とも等しくないので、ラベルOTHERに分岐します。

OUT命令で1-4までを入力するよう促すメッセージが出力されました。

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

横浜みなとみらいの夜景です。
ランドマークタワーから撮影しました。

スカイツリーのライトアップと河津桜です。


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

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

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

関東以外の観光地や、あなたの行ってみたい場所など、好きなようにアレンジしてみて下さい!!

TEST START
 RPUSH

;観光地の番号を入力する
;GR1に入力した観光地の番号を読み込む
;GR1と番号'1'を比較
;等しくなければL2に分岐する
;1であれば「YOKOHAMA」と出力
;ラベルFINに分岐

;ラベルL2ではGR1と'2'を比較する
;等しくなければL3に分岐する
;2であれば「SKYTREE」をと出力
;ラベルFINに分岐

;ラベルL3ではGR1と'3'を比較する
;等しくなければL4に分岐する
;3であれば「ONJYUKU」と出力
;ラベルFINに分岐

;ラベルL4ではGR1と'4'を比較する
;等しくなければOTHERに分岐する
;4であれば「ODAIBA」と出力
;ラベルFINに分岐

;ラベルOTHERでは文字列NOTHINGと文字数LEN5で出力 

FIN  RPOP
 RET

LOCATE DS 256 ;場所の領域を確保
LEN DC 1 ;文字数1文字
LOCATE1 DC 'YOKOHAMA' ;最初の場所横浜
LEN1 DC 8 ;横浜の文字数
LOCATE2 DC 'SKYTREE' ;2番目の場所スカイツリー
LEN2 DC 7 ;スカイツリーの文字数
LOCATE3 DC 'ONJYUKU' ;3番目の場所御宿
LEN3 DC 7 ;御宿の文字数
LOCATE4 DC 'ODAIBA' ;4番目の場所お台場
LEN4 DC 6 ;お台場の文字数
NOTHING DC 'PREASE ENTER 1-4' ;1から4までを入力するようにメッセージ
LEN5 DC 16 ;その他の場合の文字数


 END

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

御宿海岸と

お台場です。

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

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

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

 

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

自己紹介


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

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


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



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

午前免除試験

午後試験のオススメ本

スコアレポート

07 アセンブラCASL2、スタックを使って「CMYK」を逆さ取り出し!

この記事ではCASL2アセンブラ言語で、スタックを利用して文字列を逆に取り出すプログラムを作りました。

取り出す文字列は、インクジェットプリンターのインクで使われる「CMYK」です。
その「CMYK」の文字の並びを逆にした、「KYMC」をスタックに積み上げて、スタックの仕組みを利用して「CMYK」にして出力します。

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

CMYKについて基本情報技術者試験(FE)を受けられる方は既にご存知だと思いますが、簡単にお話しすると、インクジェットプリンターで使われているインクです。

C(シアン)、M(マゼンタ)、Y(イエロー)、K(ブラック)のことで、もう少し詳しく知りたい方は、こちらの外部記事が分かりやすいです。

この配列BEFOREは、逆から読むとCMYKになります。
スタックと言う、イメージ的に積み木みたいな仕組みを使って、
配列BEFOREの「KYMC」を配列AFTERに「CMYK」と出力されるように格納します。

配列BEFOREのすぐ後にあるのは、目印に使う配列ENDでゼロが格納されています。

では、積み木みたいなスタックに積まれて行く様子を図にします。
スタックに積む時にはPUSH命令を使います。

文字の処理が終わったかどうかの目印に、「0(ゼロ)」を使いますので、最初に0をスタックに積みます。

スタックにはPUSH命令で、このように1文字ずつ積み上げていき、取り出す時には
POP命令を使って、一番上(最後に積み上げた文字)から順に取り出します。
取り出した文字を出力用の配列AFTERに格納します。

すると、「KYMC」が「CMYK」になって出力されます。

元の文字列「KYMC」は配列BEFORE[]に入っています。
スタックを使って出力用に格納する配列はAFTER[]です。
どちらも、GR1を使ってアドレスを指し示します。

GR2は、文字列をスタックに積んだり取り出したりする時に使います。
また、GR2は、出力用文字列に格納する時にも使います。

CMYKの文字コードはこちらになります。
‘K’…「004B」
‘Y’…「0059」
‘M’…「004D」
‘C’…「0043」

文字コードについてはこちらの外部記事が分かりやすいです。

それでは、プログラムを掲載致します。

TEST START

 RPUSH

 LAD GR2,0 ;GR2に目印の0を設定
 PUSH 0,GR2 ;スタックにGR2の値を積む
 LAD GR1,BEFORE ;GR1に配列BEFOREの先頭アドレスを設定
 OUT BEFORE,LEN ;配列BEFOREを出力

;<<スタックに積むループPUSH>>
LOOPPUSH LD GR2,0,GR1 ;GR2に配列BEFOREのGR1が指し示す文字を読み込む
 CPL GR2,=0 ;目印の0まで到達したか、GR2の文字と目印0を比較する
 JZE PREPOP ;目印0まで到達したら配列AFTERの準備でPREPOPまで分岐する
 PUSH 0,GR2 ;処理中の場合は読み込んだ文字をスタックに積む
 LAD GR1,1,GR1 ;配列BEFOREの位置を1つ先に進めるのでGR1をインクリメントする
 JUMP LOOPPUSH ;読み込みとスタックに積む処理が完了するまでLOOPPUSHを繰り返す

;配列AFTERの出力準備
PREPOP LAD GR1,AFTER ;GR1に配列AFTERのアドレスを設定

;<<スタックから取り出すループPOP>>
LOOPPOP POP GR2 ;スタックから1文字取り出してGR2に格納
 CPL GR2,=0 ;文字の取り出しが最後の目印まで到達したか確認
 JZE FIN ;等しい(取り出し処理が終了)場合はFINラベルへ
 ST GR2,0,GR1 ;処理中ならGR2で取り出した文字をGR1を使って配列AFTERに格納
 LAD GR1,1,GR1 ;配列AFTERの位置を1つ先に進めるのでGR1をインクリメントする
 JUMP LOOPPOP ;出力処理が終わるまでLOOPPOPを繰り返す


FIN OUT AFTER,LEN ;配列AFTERを出力する


 RPOP
 RET

BEFORE DC 'KYMC'
END DC 0
AFTER DS 100
LEN DC 4


 END

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

GR2に目印となる0を設定し、スタックにその0を積みます。

GR1に配列BEFOREの先頭アドレスを設定します。

OUT命令で元の文字の配列BEFOREをコンソールに出力します。

スタックにPUSHするループ、LOOPPUSHに入り、配列BEFOREの先頭文字の‘K’…「004B」をGR2に読み込みます。

GR2のKと目印の0を比較します。
等しくないのでループを続行します。

スタックに‘K’…「004B」を積みます。

配列BEFOREの位置を1つ進めるのでGR1をインクリメントします。

ループLOOPPUSHを繰り返します。

GR2に‘Y’…「0059」を読み込みます。

Yと目印の0を比較します。
等しくないのでループを続けます。

スタックに‘Y’…「0059」を積みます。

配列BEFOREを1つ先に進めるので、GR1をインクリメントします。

ループLOOPPUSHを繰り返します。

GR2にM’…「004D」を読み込みます。

Mと目印の0を比較します。
等しくないのでループを続けます。

スタックにM’…「004D」を積みます。

配列BEFOREを1つ先に進めるので、GR1をインクリメントします。

ループLOOPPUSHを繰り返します。

GR2に‘C’…「0043」を読み込みます。

Cと目印の0を比較します。

等しくないのでループを続けます。

スタックに‘C’…「0043」を積みます。

配列BEFOREを1つ先に進めるので、GR1をインクリメントします。

ループLOOPPUSHを繰り返します。

GR2に‘目印’、配列ENDの「0」を読み込みます。

GR2と目印の0を比較します。
等しいので、ゼロフラグが立ちました。

分岐命令JZEで、ループを抜けて配列AFTERの出力準備のPREPOPに分岐して、GR1に配列AFTERの先頭アドレスを設定します。

今度は取り出しループのLOOPPOPに入り、スタックから一番上に積まれた‘C’…「0043」をPOP命令で取り出します。

スタックからGR2に取り出された‘C’…「0043」と目印の0を比較します。
等しくないのでループを続けます。

GR2に取り出された‘C’…「0043」を配列AFTERに格納します。

配列AFTERを1つ先に進めるのでGR1をインクリメントします。

ループLOOPPOPに戻ります。

GR2にスタックから一番上に積まれているM’…「004D」をPOP命令で取り出します。

スタックからGR2に取り出されたM’…「004D」と目印の0を比較します。
等しくないのでループを続けます。

GR2に取り出されたM’…「004D」を配列AFTERに格納します。

配列AFTERを1つ先に進めるのでGR1をインクリメントします。

ループLOOPPOPに戻ります。

スタックから一番上に積まれている‘Y’…「0059」をPOP命令で取り出します。

スタックからGR2に取り出された‘Y’…「0059」と目印の0を比較します。
等しくないのでループを続けます。

GR2に取り出された‘Y’…「0059」を配列AFTERに格納します。

配列AFTERを1つ先に進めるのでGR1をインクリメントします。

ループLOOPPOPに戻ります。

スタックから一番上に積まれている‘K’…「004B」をPOP命令で取り出します。

スタックからGR2に取り出された‘K’…「004B」と目印の0を比較します。
等しくないのでループを続けます。

GR2に取り出された‘K’…「004B」を配列AFTERに格納します。

配列AFTERを1つ先に進めるのでGR1をインクリメントします。

ループLOOPPOPに戻ります。

スタックから最後に残った目印の「0」をPOP命令で取り出します。

スタックからGR2に取り出された0と目印の0を比較します。
等しいのでJZE命令でFINラベルに分岐します。

コンソールに配列AFTERを出力します。

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


目白庭園という日本庭園の紅葉ライトアップです。


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

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

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

このコードでも、推しがいる方はあなたの推しの名前をスタックを使って取り出してみると面白いと思います。

TEST START

 RPUSH

;GR2に目印の0を設定
;スタックにGR2の値を積む
;GR1に配列BEFOREの先頭アドレスを設定
;配列BEFOREを出力

;<<スタックに積むループPUSH>>
;GR2に配列BEFOREのGR1が指し示す文字を読み込む
;目印の0まで到達したか、GR2の文字と目印0を比較する
;目印0まで到達したら配列AFTERの準備でPREPOPまで分岐する
;処理中の場合は読み込んだ文字をスタックに積む
;配列BEFOREの位置を1つ先に進めるのでGR1をインクリメントする
;読み込みとスタックに積む処理が完了するまでLOOPPUSHを繰り返す

;配列AFTERの出力準備
;GR1に配列AFTERのアドレスを設定

;<<スタックから取り出すループPOP>>
;スタックから1文字取り出してGR2に格納
;文字の取り出しが最後の目印まで到達したか確認
;等しい(取り出し処理が終了)場合はFINラベルへ
;処理中ならGR2で取り出した文字をGR1を使って配列AFTERに格納
;配列AFTERの位置を1つ先に進めるのでGR1をインクリメントする
;出力処理が終わるまでLOOPPOPを繰り返す


;配列AFTERを出力する


 RPOP
 RET

BEFORE DC 'KYMC'
END DC 0
AFTER DS 100
LEN DC 4


 END

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

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

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

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

 

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

自己紹介


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

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


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



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

午前免除試験

午後試験のオススメ本

スコアレポート

06アセンブラCASL2、配列で合格(GOUKAKU)を出力!

この記事ではアセンブラ言語で、配列と添字についてのサンプルプログラムを掲載しております。

恐らく、基本情報技術者試験の合格を目指していらっしゃる方がこの記事を読まれていると思いますので、文字列を1文字置きに取り出して「GOUKAKU」の文字を出力するサブルーチンを作りました。


下の配列BEFOREの黄色いセルが、取り出すべき文字の「GOUKAKU」です。
1文字置きに抽出するよう、アドレスを指し示すのに使うGR1は2つずつ加算して、それに対して出力用の配列AFTERの格納用アドレスに使うGR2は1つずつインクリメントして行きます。

最後までトレースすると、この様になります。

配列は添え字が0から始まりますので、GR1とGR2に0を読み込んでいます。
GR3は、元の文字列BEFOREの文字を読み込むのに使います。

文字コードは、

‘G’…「0047」
‘O’…「004F」
‘U’…「0055」
‘K’…「004B」
‘A’…「0041」
‘K’…「004B」
‘U’…「0055」

です。
文字コードはこちらの外部サイトが分かりやすいです。

では、コードを掲載致します。

TEST START

 RPUSH
 LAD GR1,0 ;GR1に配列BEFOREの先頭の添え字0を読み込む
 LAD GR2,0 ;GR2に配列AFTERの先頭の添え字0を読み込む

;<<ここからループ>>
LOOP CPL GR2,=7 ;GR2とAFTER(GOUKAKU)の文字数7文字を比較
 JZE FIN ;等しかったらFINへ分岐
 LD GR3,BEFORE,GR1 ;GR3に配列BEFOREの文字を1つずつ読み込む
 ST GR3,AFTER,GR2 ;GR3の文字を配列AFTERに格納

 LAD GR2,1,GR2 ;AFTERのGR2をインクリメント
 

 LAD GR1,2,GR1 ;BEFOREのGR1を2つ増やす
 JUMP LOOP ;LOOPへ分岐
;<<ここまでループ>>


FIN OUT AFTER,ALEN ;配列AFTERを出力

 RPOP
 RET

BEFORE DC 'GROGUBKCAMKYU' ;配列BEFOREを用意
AFTER DS 7 ;配列AFTERに領域7つ分を確保
ALEN DC 7 ;AFTERの文字数ALENを7文字とする

 END

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

GR1に配列BEFOREの添え字0が入ります。

GR2に配列AFTERの添え字0が入ります。

ループに入ります。

GR2(現在0)と文字数の7を比較して、GR2の方が小さいのでSFにフラグが立ちます。
SF(サインフラグ)は比べて小さかった時に「1」が立ちます。
比較する際に減算を用いていて、GR2の0から7を引くとマイナスになるので、SFが立ちました。

GR2と7は等しくないので分岐せずにループを続けます。

GR3にBEFOREの最初の文字’G’(文字コード0047)が入ります。

‘G’を配列AFTERの先頭に格納します。

配列AFTERの添え字を指すGR2をインクリメントします。

配列BEFOREの添え字を指すGR1を2つ増やします。

ループの先頭にジャンプします。

GR2(現在1)とAFTERの文字数7を比較して、GR2の方が小さいので、SFが立ち、分岐をせずにループを続行します。

GR3に’O’…「004F」が読み込まれます。

配列AFTERの添え字1に’O’が格納されます。

GR2をインクリメントします。

GR1を2つ増やします。

この繰り返しで、G,Oと順番に配列AFTERを格納していき、最後の’U’…「0055」を格納する所まで進めます。

(GOUKAKUの、後ろの方の’K’…「004B」を格納した所まで進めます。)

現在シミュレーターは、配列AFTERの添え字であるGR2が6になっていて、格納された文字のGR3が’K’…「004B」となっている所まで進めました。

GR2(現在6)と7を比較して、SFが立ちましたので、ループを続行します。

GR3に’U’…「0055」が入りました。

‘U’を配列AFTERに格納します。

GR2をインクリメントします。

GR1を2つ増やします。

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

GR2の現在の値7が比較する7と等しかったので、ZFが立ってFINに分岐します。

FINラベルの所のOUT命令でコンソールに出力されました。

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

お台場のレインボーブリッジです。
東京タワーがレインボーブリッジの中央より少し右側に写っています。


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

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

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

TEST START

 RPUSH
;GR1に配列BEFOREの先頭の添え字0を読み込む
;GR2に配列AFTERの先頭の添え字0を読み込む

;<<ここからループ>>
;GR2とAFTER(GOUKAKU)の文字数7文字を比較
;等しかったらFINへ分岐
;GR3に配列BEFOREの文字を1つずつ読み込む
;GR3の文字を配列AFTERに格納

;AFTERのGR2をインクリメント
 

;BEFOREのGR1を2つ増やす
;LOOPへ分岐
;<<ここまでループ>>


;配列AFTERを出力

 RPOP
 RET

BEFORE DC 'GROGUBKCAMKYU' ;配列BEFOREを用意
AFTER DS 7 ;配列AFTERに領域7つ分を確保
ALEN DC 7 ;AFTERの文字数ALENを7文字とする

 END

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

お台場レインボーブリッジと自由の女神です。

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

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

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

 

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

自己紹介


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

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


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



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

午前免除試験

午後試験のオススメ本

スコアレポート

05 アセンブラCASL2「LOVE」をループと条件判断で取り出す

この記事ではアセンブラ言語で、文字コードの比較を使って文字列の中から大文字の英字である、「LOVE」を取り出すことを学べます。

単調な勉強ではありますが、「推し」がいる方は推しの方への思いを込めて手を動かして頂けたらと思います。

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

上記ような、英字と数字が混在した文字列の中から、文字コードを比較して、英字のみを取り出します。

コードを掲載する前に、各汎用レジスタがどのような動きをするのか、図解で掲載致します。

数字の文字コードは、’1’が「0031」、’2’が「0032」・・・’9’が「0039」です。
それに対して英語の大文字は、’A’が「0041」、’B’が「0042」・・・’Z’が「005A」になります。

今回抽出する文字列の、LOVEは、
‘L’…「004C」
‘O’…「004F」
‘V’…「0056」
‘E’…「0045」
になります。

元の文字列(BEFORE)の「9L23OV6E81」の中から、英文字である「L,O,V,E」を取り出します。
どのようにして取り出すのかというその仕組みを簡単に書くと、

・文字コードの比較を行い、数字や記号の場合はスキップする
・英字の場合は出力文字列(AFTER)に格納する

と言った仕組みです。

比較を使って、文字コードが数字の’9’以下の文字の場合は処理をスキップ致します。
前述の通り英文字の文字コードは、数字よりも大きいで、その文字コードの大きさで、英文字か数字かを判断しています。

文字コードについて不安な方は、こちらの外部記事が分かりやすいです。

文字列の位置が分かるような図を掲載致します。

(下の図を見ても分かりづらい場合でも、プログラムを動かしながら1つずつトレースをして行きますので、安心して下さい。)

元の文字列「BEFORE」は、0号室、1号室…9号室まであります。
全部で10文字分なので、BEFOREの文字数BLENにはDCで10を入れます。

出力用の文字列「AFTER」は、0号室、1号室…3号室まであります。


GR1は、元の文字列BEFOREの先頭アドレス「0号室」を指します。

GR2は、出力用文字列AFTERの先頭アドレス「0号室」を指します。

GR4は、GR1が指す「元の文字列BEFOREの0号室の住人」の「’9’」さんを安否確認するように見つめています。

GR3は処理した文字数のカウントに使います。

元の文字列BEFOREの文字数が10文字ですので、処理した文字数をカウントするGR3が10と等しくなった時に、FINラベルに分岐してループを抜けた後に出力処理に移ります。


最初は処理した文字数のカウントのGR3の値は0でBEFOREの文字の長さ(BLEN)の10文字より小さいので、ループの処理を行います。

ループの中で、 GR4が見ている「’9’」さんが「’0’(ゼロ)」さんより小さいか
どうかの判断します。(小さい場合は、「’!’」や「スペース」などの記号です。)
小さくは無いので、このまま進めます。

「’9’」さんは「’9’」と等しいかを判断します。
当てはまったので、英文字ではないことが分かります。
つまり、出力すべき「L,O,V,E」ではないので、処理せずにSKIPへ行きます。

SKIPしたところでは、GR1を0号室から1号室に進めます。

処理した文字数を1つ増やすので、カウントに使うGR3の値が0から1になります。

JUMP命令で、LOOPに戻ります。


ループを続けるのかの判断で、先ほどの図の通り処理した文字数のカウントに使っているGR3が1で、BEFOREの文字の長さBLENの10文字よりも小さいので、ループの処理を行います。

GR1の値が先頭アドレスの0号室から、1つ移動したので、GR1が1号室を指し示します。
今度はGR4は、「’9’」さんの隣にいる「’L’」さんを、安否確認する様に見ています。


GR4が安否確認する様に見ている、 「’L’」さんが英大文字かどうか判断します。
‘L’さんの文字コードは「004C」で、’9’の「0039」よりも大きいので、出力用の文字列のAFTERに格納する処理を行います。


出力用の文字列AFTERのGR2が指し示す0号室に、「’L’」さんを入室許可します。


出力用の文字列AFTERを1つ進めて、GR2は1号室を指します。

元の文字列BEFOREも1つ進めて、GR1は2号室を指します。

処理した文字を1つ増やすので、 GR3が2になります。

その後、またループに戻ります。

ということを繰り返して、「L,O,V,E」と取り出していきます。

それではソースを掲載して、実際にシミュレーターで動かして行きます。


上記の図を見て分かりにくいと思われても、1つ1つトレースをしてシミュレーターの図でレジスタの値の変化が分かるようにスクショしましたので、安心して下さい。

TEST START

 RPUSH
 LAD GR1,BEFORE ;GR1に元の文字列BEFOREの先頭アドレスを格納する
 LAD GR2,AFTER ;GR2に出力用の文字列AFTERの先頭アドレスを格納する
 LAD GR3,0 ;GR3に処理した文字数をカウントする

;<<ここからループ>>
LOOP CPL GR3,BLEN;GR3のカウント数と元の文字列の長さBLENを比較する
 JZE FIN;GR3のカウントが元の文字列の長さと等しかったらFINに分岐する
 LD GR4,0,GR1;GR4に元の文字列からGR1が指し示すアドレスに入っている文字を取得する
 CPL GR4,='0';GR4の文字と'0'(ゼロ)を比較する
 JMI SKIP;'0'より小さかったらSKIPへ分岐する
 CPL GR4,='9';GR4の文字と'9'を比較する
 JMI SKIP;'9'より小さかったらSKIPへ分岐する
 JZE SKIP;'9'と等しかったらSKIPへ分岐する

;出力すべき英字なので出力用の配列に格納する
 ST GR4,0,GR2;GR4の文字を出力用の文字列AFTERに格納する
 LAD GR2,1,GR2;出力用の文字列AFTERを指し示すGR2を1つ先に進める


;数字・英字共通のSKIPラベル
SKIP LAD GR1,1,GR1;元の文字列BEFOREを1つ先に進める
 LAD GR3,1,GR3;処理した文字数のカウント用のGR3をインクリメント
 JUMP LOOP;ループへ戻る


;<<ループはここまで。>>

;ループを抜けた後の出力処理
FIN OUT BEFORE,BLEN;元の文字列を出力する
 LAD GR1,AFTER;GR1に出力用文字列AFTERの先頭アドレスを読み込む
 SUBL GR2,GR1;出力用文字列AFTERの現在のアドレスGR2から先頭アドレスのGR1を引く
 ST GR2,ALEN;上で求めた文字数を出力用文字列の文字数ALENに格納する
 OUT AFTER,ALEN;出力用の文字列AFTERを出力する

BEFORE DC '9L23OV6E81';元の文字列BEFORE
BLEN DC 10 ;元の文字列の文字数BLENを10文字とする
AFTER DS 20;出力用文字列AFTERの領域を20確保
ALEN DS 1;出力用の文字数AFTERの領域を1確保


 RPOP
 RET

 END

それでは実行して、シミュレーターを動かして1つずつトレースをしていきます。

GR1に、元の文字列BEFOREの先頭のアドレスが入ります。
(GR1とGR2の値は、実行環境によって異なりますので、増加の状態以外は気にしないで下さい)

GR2に出力する文字列AFTERの先頭のアドレスが入ります。

GR3に文字処理のカウント数ゼロが入ります。

GR3の0と元の配列の長さBLEN(=10)を比較し、GR3の方が小さいので、サインフラグSFがマイナスになります。

GR3はBLENと等しくないので、分岐はしません。

GR4に元の文字列BEFOREの最初の文字である’9’が入ります。
‘9’の文字コードは「0039」です。

GR4の文字’9’と’0’を比較します。
小さくないので、サインフラグはSFはそのままです。

そのため、分岐はしません。

次に、GR4の文字’9’と’9’が等しいか比較します。
等しいのでゼロフラグZFが立ちます。

JMIで9より小さい、JZEで9と等しい場合はSKIPに分岐します。
アセンブラでは他の言語みたいに「<=」で以下という表記はできない為、
以下ということは、「より小さい」と「等しい」の2つの処理に分割して記述しています。

この場合、’9’「以下」なのでJZEでSKIPに分岐して、出力するLOVEではないので、出力に関する処理を飛ばしています。

SKIPでは、元の文字列BEFOREを1つ先に進めます。

処理した文字数のGR3をインクリメントします。

ループに戻ります。

ループの先頭では、処理した文字数GR3の1と文字列BEFOREの長さBLENの10を比較します。

GR3の方が小さいので、SFのフラグが立ちました。
BLENと等しくないので、このままループを続けます。

GR4に、BEFOREの文字列 ‘L’ を取得します。
‘L’ の文字コードは「004C」です。

‘L’が’0’や’9’以下かどうか比較します。
小さくないのでSKIPに分岐せずに出力用文字列AFTERへの格納処理を行います。

GR4の文字’L’をAFTERに格納します。

AFTERを1つ先へ進めます。

と繰り返して行き、文字列処理カウントのGR3が9になる所まで飛ばして、そこからトレースします。



シミュレーターの値はこの様になっています。

GR4にBEFOREの最後の文字 ‘1’ が入りました。
‘1’ の文字コードは「0031」です。

GR4の’1’は’0’より大きいですが’9’より小さいので、SFフラグが立ってSKIPに分岐します。

元の文字列BEFOREを1つ進めます。

処理した文字数のGR3をインクリメントします。

ループに戻ります。

処理した文字数のGR3と文字数BLENの10を比較し、等しいのでゼロフラグZFが立ちます。

JZEよりFINに分岐して文字列を出力します。

元の文字列BEFOERを出力します。

出力用の文字列AFTERの先頭アドレスをGR1に入れます。

出力用の文字列の現在のアドレスGR2から先頭のアドレスGR1を引きます。
GR2にAFTERの文字数が4文字であることが求まります。

GR2の求めた文字数をAFTERの文字数ALENに格納します。

AFTERを出力します。

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

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


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

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

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

このコードですと、出力する文字列をあなたの推しの名前にしてみたら、きっと楽しいですし、理解も深まると思います!

TEST START

 RPUSH
;GR1に元の文字列BEFOREの先頭アドレスを格納する
;GR2に出力用の文字列AFTERの先頭アドレスを格納する
;GR3に処理した文字数をカウントする

;<<ここからループ>>
;GR3のカウント数と元の文字列の長さBLENを比較する
;GR3のカウントが元の文字列の長さと等しかったらFINに分岐する
;GR4に元の文字列からGR1が指し示すアドレスに入っている文字を取得する
;GR4の文字と'0'(ゼロ)を比較する
;'0'より小さかったらSKIPへ分岐する
;GR4の文字と'9'を比較する
;'9'より小さかったらSKIPへ分岐する
;'9'と等しかったらSKIPへ分岐する

;出力すべき英字なので出力用の配列に格納する
;GR4の文字を出力用の文字列AFTERに格納する
;出力用の文字列AFTERを指し示すGR2を1つ先に進める


;数字・英字共通のSKIPラベル
;元の文字列BEFOREを1つ先に進める
;処理した文字数のカウント用のGR3をインクリメント
;ループへ戻る


;<<ループはここまで。>>

;ループを抜けた後の出力処理
;元の文字列を出力する
;GR1に出力用文字列AFTERの先頭アドレスを読み込む
;出力用文字列AFTERの現在のアドレスGR2から先頭アドレスのGR1を引く
;上で求めた文字数を出力用文字列の文字数ALENに格納する
;出力用の文字列AFTERを出力する

BEFORE DC '9L23OV6E81';元の文字列BEFORE
BLEN DC 10 ;元の文字列の文字数BLENを10文字とする
AFTER DS 20;出力用文字列AFTERの領域を20確保
ALEN DS 1;出力用の文字数AFTERの領域を1確保


 RPOP
 RET

 END

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

恵比寿ガーデンプレイスのクリスマスイルミネーションです。

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

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

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

 

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

自己紹介


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

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


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



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

午前免除試験

午後試験のオススメ本

スコアレポート

03アセンブラCASL2右シフトで、偶数は「北海道」、奇数は「沖縄」旅行!!

この記事ではアセンブラ言語で、偶数と奇数の判別について掲載しております。
ある数を右にシフトすると、偶数の場合はオーバーフローせず、奇数だったらオーバーフローするので、分岐により出力メッセージを分けます。
オーバーフローについては、

このシフトやオーバーフローについて、後ほど具体例を用いて詳しく説明致しますが、オーバーフローって何!?と気になった方は、こちらの外部記事が分かりやすいのでオススメです。(基本情報技術者試験では勿論、ITパスポート受験の際にもお世話になったサイトです。)

さて、行動制限も無くなって東京に住んでいる私は、アセンブラで偶数でしたら北海道に、奇数でしたら沖縄に旅行したい気分です♪

そんな、旅行気分が味わえるサブルーチンを作って見ました。

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

具体的には、GR1に設定された数が、
偶数の場合は「HOKKAIDO」
奇数の場合は「OKINAWA」
と出力します。

偶数は英語でEVEN、奇数はODDですので、それらをラベル名に使います。

偶数の例として、10進数の「4」は、2進数で(0100)、
奇数の例として、10進数の「7」は、2進数で(0111)を挙げます。

偶数を右にシフトすると、4でしたら「0100」→「0010」になって、
右に落っこちるのは、「0100」の一番下の桁である「0」ですよね。
つまり、オーバーフローしないです。

奇数を右にシフトすると、7でしたら「0111」→「0011」になって、
右に落っこちるのは、「0111」の一番下の桁である「1」ですよね。
つまり、オーバーフローします。

オーバーフローした時のジャンプ命令「JOV」を使って、出力する文字を分岐します。

まずは、偶数の例。

TEST START
 RPUSH

 LAD GR1,4;←GR1に数を指定

 SRL GR1,1;1ビット右へシフト
 JOV OVER;オーバーフローした場合はラベルOVERへジャンプ

 OUT EVEN,LEN;偶数の旅先「北海道」を出力
 JUMP FIN;ラベルFINへジャンプ

OVER OUT ODD,LEN2;奇数の旅先「沖縄」を出力

FIN RPOP;終了のFINラベル
 RET

EVEN DC 'HOKKAIDO';偶数ラベル
LEN DC 8;文字数

ODD DC 'OKINAWA';奇数ラベル
LEN2 DC 7;文字数

 END

4行目のところで、GR1に偶数の例として「4」を設定しています。

実行すると、GR1に4が入りました。


SRLで右シフトすると、GR1が2になりました。

10進数の「4」は2進数では「0100」なので、右に1ビットシフトすると「0010」になり、右に落っこちたのは「0」なのでオーバーフローせず、OFフラグは0です。

右側のコンソールでは、「HOKKAIDO」と出力されました。

シフトについての上記の説明が分かりにくかった場合、こちらの外部記事ではYouTubeによる動画の解説もありますので、気になった方はご覧下さい。

次にGR1に、奇数である7を設定した場合の例です。
4行目のGR1の値を偶数から奇数の「7」に設定した所以外は、同じコードです。

TEST START
 RPUSH

 LAD GR1,7;←GR1に数を指定

 SRL GR1,1;1ビット右へシフト
 JOV OVER;オーバーフローした場合はラベルOVERへジャンプ

 OUT EVEN,LEN;偶数の旅先「北海道」を出力
 JUMP FIN;ラベルFINへジャンプ

OVER OUT ODD,LEN2;奇数の旅先「沖縄」を出力

FIN RPOP;終了のFINラベル
 RET

EVEN DC 'HOKKAIDO';偶数ラベル
LEN DC 8;文字数

ODD DC 'OKINAWA';奇数ラベル
LEN2 DC 7;文字数

 END

実行すると、GR1に7が入りました。

右シフトすると、GR1が3になりました。
10進数「7」は2進数「0111」で、右シフトすると「0011」になって10進数の「3」になりました。

この時に、「0111」の一番下の桁の「1」が落っこちましたので、オーバーフローのフラフOFが1になりました。

オーバーフローをしたので、7行目のJOVの分岐で、12行目のラベルOVERにジャンプしました。

右側のコンソールには、「OKINAWA」が出力されました。

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


ここは、東京都立川市と日野市の境目の立日橋付近の多摩川土手で撮影した中央線です。

多摩川土手は、ランニングされている方も結構いらっしゃいました。

ここでは、通勤で良く見る電車と、特急や貨物列車も撮れました。
(2023年GWに撮影)


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

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

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

TEST START
 RPUSH

 ;←GR1に数を指定

 ;1ビット右へシフト
 ;オーバーフローした場合はラベルOVERへジャンプ

 ;偶数の旅先「北海道」を出力
 ;ラベルFINへジャンプ

;奇数の旅先「沖縄」を出力

FIN RPOP;終了のFINラベル
 RET

EVEN DC 'HOKKAIDO';偶数ラベル
LEN DC 8;文字数

ODD DC 'OKINAWA';奇数ラベル
LEN2 DC 7;文字数

 END

CASL2にはJOVやJUMP以外にも分岐命令があり、こちらの外部サイトがサンプル付きで分かりやすいです。

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

多摩モノレールです。
JR立川から立川南まで徒歩で行き、柴崎体育館で下車。
日野方面に南下して撮影しました。

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

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

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

 

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

自己紹介


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

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


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



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

午前免除試験

午後試験のオススメ本

スコアレポート

02アセンブラCASL2で「好きな食べ物」を入出力!

この記事では、アセンブラ言語であなたの好きな食べ物の文字列を使いながら、入出力命令のINとOUTが理解出来る自作サンプルを掲載しております。

例えば、「焼肉」と「食べたい」を入出力することによって、アセンブラに慣れて行きます。

DCとDSについてはこちらの外部記事が分かり易かったです。

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

早速、コードを見て行きます。

TEST START
 RPUSH

 IN FOOD,NUM ;好きな食べ物を入力

 OUT FOOD,NUM ;その食べ物を出力

 OUT MOJI,LEN ;文字列「食べたい」を出力



 RPOP
 RET

FOOD DS 30;食べ物FOODの格納場所を確保しておく
NUM DS 1;インプットボックスに入力した、文字数NUMの格納場所を確保しておく

MOJI DC 'TABETAI!!';文字列に「食べたい」を格納しておく
LEN DC 9;「食べたい!!」の文字数を格納しておく

 END

アセンブルして、実行して見ます。
今私は、ガッツリと焼肉が食べたい気分ですので、「YAKINIKU」と入力してEnterを押します。

OKを押します。

右側のコンソールに入力した内容が反映されます。
(このシミュレーターでは、INで入力した文字が反映される仕様になっている様です。
勿論後にOUT命令で出力します。)

更に実行を押していくと、OUT命令で出力されます。

最後に「食べたい!!」という文字列が出力されます。

焼肉、焼肉って、なんだかお腹が空いているみたいですね(笑)

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

いたばし花火大会2023


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

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

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

TEST START
 RPUSH

;好きな食べ物を入力

;その食べ物を出力

;文字列「食べたい」を出力



 RPOP
 RET

;食べ物FOODの格納場所を確保しておく
;INPUTBOXに入力した文字数NUMの格納場所を確保しておく

;文字列に「食べたい(TABETAI!!)」を格納しておく
;「食べたい」の文字数を格納しておく


 END

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

今年2023年、4年ぶりの花火大会に行ってきました、いたばし花火大会の写真です。
高島平駅から北上して新河岸から撮影しました。

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

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

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

 

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

自己紹介


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

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


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



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

午前免除試験

午後試験のオススメ本

スコアレポート

01 アセンブラCASL2対応のシミュレータ―とおススメ本と簡単なサンプルプログラム

この記事では、基本情報技術者試験(以下FE)のアセンブラ言語習得に欠かせない「CASLⅡ対応のオススメのシミュレーター」の紹介私の合格に直結した本の紹介をしております。

お急ぎの方には、先にこちらのWebシミュレーターと、合格に直結した本を紹介致します。

「プログラミング入門CASL2」浅井宗海先生 実教出版

2020年からのFEは、言語とアルゴリズムの配点が高くなりました。

その為、プログラミング未経験の事務職の私は非常に焦っていましたが、無事に一発で合格できました。

勉強は、「人に教えるフリをする【アウトプット】で身に付く」と聞いたことがあり、FEの学習中に、自分の理解を深めながらアウトプットとして、簡単なサンプルのプログラムを作ってそれを公開しておりました。

(「推し」がいる方は、その推しにプログラミング学習やFEで覚えたことを教えるフリをして勉強すると、更に楽しく勉強出来ると思います。)

合格後の今も、今後FE取得を目指す方のお役に立てればと思い、勉強中に書いたアセンブラの記事を加筆修正しております。

最初はプログラミング未経験で仕事でExcelを使うため、表計算で受験する予定でした。

しかし、表計算の学習モチベーションが上がらず、その上アルゴリズムも全く理解が出来なくて、悶々としていましたが、思い切って言語をアセンブラに切り替えた所、アセンブラの学習を通して、併せてアルゴリズムも理解することが出来ました。

関連記事:
基本情報技術者試験、プログラミング未経験者はアセンブラと表計算どっち!?

FEのアセンブラではCASLⅡ対応の学習環境で、シミュレータ―というもの
(Javaなどで言うエディター)を手に入れて、実際に動かしながら学ぶと、より良く理解出来ました。

私のような入門者でも使いやすいシミュレータ―はこちらです。

http://www.chiba-fjb.ac.jp/fjb_labo/casl/casl2.cgi

こちらのWEB版では、簡単な計算が出来ますが、INとOUTの命令が実行できないので、「ダウンロード」から入手しました。

ただ、ダウンロードなどの学習環境の構築の時間が惜しいと言う方は、こちらのWebシミュレーターの方が使いやすいかもしれません。

CASLシミュレータ (CASL II 対応)

この記事では、上記のWebシミュレーターを使って、簡単なお買い物を例にした、サンプルプログラムを掲載いたします。

ここから、アセンブラの簡単なサンプルを掲載致します!!

「Amazonの段ボール箱」と「楽天の段ボール箱」の2つの箱があったとします。
Amazonの箱を汎用レジスタGR0に当てて、楽天の箱をGR1に当てるイメージです。

AmazonのGR0に「消毒スプレー3本」入れます。
楽天のGR1に「消毒スプレー4本」入れます。
合計で7本です。

(新型コロナウイルスが2類から5類に下がった現代でも、消毒スプレーは欠かせませんので、サンプルプログラムの例と致しました。)

プログラムに「TEST」と言うラベルを付けて、開始のスタートとRET命令と終了のENDを用意します。
RETとは何かについては、こちらの外部記事をご覧下さい。
RPUSHとRPOPについてはこちらの外部記事をご覧下さい。

コードを書く注意点として、全角スペースは入れないようにお気を付けて下さい。
エラーの原因になります。
(これは他の言語でVSCodeなどのエディタでも良く言われます。)

ラベルのTESTは左端に書きます。
それ以降、左端に書くと命令ではなくラベルと判断されてしまいますので、そこもお気をつけ下さい。

最初は気をつけるところが沢山あって、大変だと思われるかも知れませんが、慣れれば大丈夫ですので、どうかご安心なさって下さい。

上記のシミュレーターでは、小文字で命令を書いても動作しましたが、FEの過去問は大文字になっておりますので、キーボードでShiftを押さなくても大文字が打てるようにした方が、私が学習していた時は混乱が減ってスムーズに学習が進みました。

TEST START
 RPUSH


 RPOP
 RET

 END

シミュレーターの画像です。

この、RPUSHからRPOPまでの間に、 Amazonと楽天の消毒スプレーを足した合計が7本になる命令を書いていきます。

今は細かいことは抜きにして、

Amazonの箱に消毒液が3本入っていて、
楽天の箱には4本入っていて、
楽天の消毒スプレーを全部Amazonの箱に移して、そのAmazonの箱に合計7本の消毒スプレーが入っているイメージの命令です。

コメントは「;」のセミコロンを使います。

TEST START
 RPUSH

 LD GR0,=3 ;GR0にAmazonの消毒液3本

 LD GR1,=4 ;GR1に楽天の消毒液4本

 ADDA GR0,GR1 ;全ての消毒液をAmazonに移す

 RPOP
 RET

 END

ソースの入力が終わりました。
ソースの枠の右下を斜め下方向にドラッグすると、ソースの枠が広がります。

このプログラムを実行するには、「アセンブル」ボタンを押して、ステップごとに実行するには、下記のボタンを押します。

まず、Amazonの箱GR0に「3」が入りました。

更にステップ実行していくと・・・

楽天の箱GR1に「4」が入りました。

加算命令ADDAが実行して、Amazonの箱に7本全部が入りました。

ここまでご精読頂き、言語をアセンブラにしよう!と決めた方にとっては、下記の本がかなりオススメで、私の合格に直結した本です。

「プログラミング入門CASL2」浅井宗海先生 実教出版

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

OLYMPUS DIGITAL CAMERA

代々木公園で撮影した薔薇です。


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

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

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

TEST START
 RPUSH

;GR0にAmazonの消毒液3本

;GR1に楽天の消毒液4本

;全ての消毒液をAmazonに移す

 RPOP
 RET

 END

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

代々木公園で撮影した紫陽花です。

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

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

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

 

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

自己紹介


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

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


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



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

午前免除試験

午後試験のオススメ本

スコアレポート

修了認定に係る試験(基本情報技術者試験の午前免除試験、平成30年6月10日実施分)

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

午前免除試験を受けて合格しました!!

こんにちは!
本日令和2年3月9日に、平成30年に行われた、
基本情報技術者試験の修了試験6月10日分を時間測って
解きました。

80問中62問正解で、77.5%です。
24問間違えて、5問まぐれ当たりしました。
ミスした所+まぐれ当たりの解説を、
基本情報技術者試験ドットコムなどの解説サイト様の
リンクを貼らせて頂きました。

●問3文字コード(まぐれ当たり)
パリティビットって、最後に付加するから、
7Aの所が変わるのでは、と思って、イにしたら、
運よく当たっていました。
しかし、ちゃんと理解していたわけでは無いので、
復習しました。
https://www.fe-siken.com/kakomon/17_haru/q10.html
ドットコムさんです。

奇数ビット…ビット列とパリティを合わせて「1」の数が奇数
その逆が偶数ビットか。

●問5二分木
https://www.fe-siken.com/kakomon/26_haru/q6.html
ドットコムさんの解説読んで今は理解出来たけれど、
この問題、練習が必要だ。

●問7フローチャート
これは、「開始」の後の処理「TANGO[0]←TANGO[n]」を
読み飛ばしてしまった為にミスしました。
落ち着いて、トレースして見ます。

nを5とした場合、こんな感じの配列TANGOがあります。
TANGO[5]の「お」をTANGO[0]に移動して、TANGO[1]から
TANGO[4]の「あ」~「え」が入っている所を、1つずつ後ろのします。

ループ前の□では、この処理が行われました。

i=n-1=4なので、今度は「え」を「お」の所に移動します。

これで、解けました。
https://www.fe-siken.com/kakomon/23_aki/q7.html
ドットコムさんの解説のリンクです。

●問14ベンチマークテスト
https://wa3.i-3-i.info/word1328.html

●問19アドレス
これは、格納アドレス1~6という問題文を見落としていました。

アドレス1に格納するデータを求める問題です。
5で割った余り+1を加えた所に格納します。
最初に3が到着し、余り+1で4に格納します。

次に4が到着し、余り+1で5に格納します。

次に8が到着し、余り3に1を加えた4に格納したい所ですが、
先客があるので、その次に格納します。

次に13が来て、余り+1で4ですが、先客が末尾まであるので、
先頭に移動します。

14を格納

最後に18を格納します。
これで、問題で求める「アドレス1」に格納される値が「13」になりました。

●問26DBMS
https://www.fe-siken.com/kakomon/27_haru/q26.html
ドットコムさんです。
スキーマの役割は、独立性なんだ。

●問28データベース(まぐれ当たり)
https://tips-memo.com/two-phase-commit
データベースが分散したシステムでロールバックを上手く利用するための
アイディアなんだ。

●問35アドレス
https://www.ap-siken.com/kakomon/23_toku/q40.html
応用情報ドットコムです。
エが正解ですが、ウにしてしまいました。
co.jpで、日本企業だとしても、日本にあるとは限らないんだ。

●問49リグレッションテスト(まぐれ当たり)
https://wa3.i-3-i.info/word12331.html
良くしようと思ったら、元のより悪くなっていた、
そういうことが内容にするテストなのか。

●問50要求分析
https://www.sc-siken.com/kakomon/25_aki/am2_23.html
セキュリティスペシャリストドットコムさんです。
進化的モデルはエボリューションモデルともいうんだ。
ポイントは「繰り返し」と「洗練」か?

●問55サービスの可用性
https://www.fe-siken.com/kakomon/29_haru/q55.html
合意された時間に対して実際に利用出来た割合、と言う所が大事かも。

●問59販売管理システム
https://www.ap-siken.com/kakomon/27_aki/q59.html
応用情報ドットコムです。
「プルーフリスト」ってなんだかよく分からなかったので、
それも調べました。
http://tooljp.com/jyosho/glossary/proof-list.html

●問60特権ID
https://www.ap-siken.com/kakomon/25_haru/q60.html
不正使用を発見するに関係あるのは、利用ログの照合か。

●問63BPM
https://www.fe-siken.com/kakomon/24_aki/q62.html
繰返し、分析、設計、実行、改善のマネジメントサイクルというのがポイントか。

●問64ホスティングサービス(まぐれ当たり)
https://wa3.i-3-i.info/word1335.html
レンタルサーバに近いんだ。

●問66環境表示(まぐれ当たり)
https://www.ap-siken.com/kakomon/27_aki/q66.html
応用情報ドットコムです。
ポイントは「環境表示」「シンボル」「マーク」

●問68購買物流(まぐれ当たり)
https://www.fe-siken.com/kakomon/27_haru/q68.html
ポイントは「購買した原材料等に対して、各プロセスに価値(バリュー)を
付加していくこと」か。

●問73生産計画(まぐれあたり)
算出式の通りに計算しましたが、自分の答えが
選択肢になかったため、一番近いものを選んだら、
まぐれで当たりました。
https://www.fe-siken.com/kakomon/23_aki/q73.html
繰越在庫を指すのは、前日の在庫計画

●問76シェア
https://www.ap-siken.com/kakomon/24_haru/q74.html
応用情報ドットコムです。
関連する問題の基本情報技術者試験ドットコムは、
https://www.fe-siken.com/kakomon/18_haru/q76.html
です。

●問77キャッシュフロー
https://www.ap-siken.com/kakomon/23_toku/q74.html
応用情報ドットコムです。
キャッシュフロー…現金の流れ
営業活動…商品に関すること等。

●問80製造物責任法
https://www.fe-siken.com/kakomon/24_haru/q80.html
人が被害に遭った時に保護するための法律。PL法。

たくさん間違えたので、長々となってしまいましたが、
読んで下さってありがとうございました。

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

修了認定に係る試験(基本情報技術者試験の午前免除試験、平成30年12月9日実施分)

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

午前免除試験を受けて合格しました!!

こんにちは!
本日令和2年3月8日に、平成30年に行われた、
基本情報技術者試験の修了試験12月9日分を時間測って
解きました。

問題

https://www.jitec.ipa.go.jp/1_80tokurei/kakomondai/tokurei_Mondai_20181209_FE.pdf

解答

https://www.jitec.ipa.go.jp/1_80tokurei/kakomondai/tokurei_ans_20181209_FE.pdf

80問中56問正解で、70%です。
24問間違えて、1問まぐれ当たりしました。
ミスした所+まぐれ当たりの解説を、
基本情報技術者試験ドットコムなどの解説サイト様の
リンクを貼らせて頂きました。

●問1 16進数
https://www.fe-siken.com/kakomon/20_haru/q2.html
ドットコムです。結構昔の過去問ですね。
凄く悩んだのですが、個々の解説を読んで、
一発で理解出来ました(;^_^A

●問2論理演算
https://www.ap-siken.com/kakomon/20_haru/q5.html
応用情報ドットコムです。
論理演算を解く方法はいくつかあり、私はベン図を使いましたが、
この問題には適さなかったようです。
X、Yに0、1を入れる解法で、NANDとORの真理値表をみれば
これも一発で解けた問題でした。

●問10メモリ
https://www.fe-siken.com/kakomon/23_aki/q12.html
マスクROMは、ROMの中でも特に、内容を書き換えられないものだから、
正解の選択肢イの「不正な書き換えを防ぐ」って所に繋がるんだ。

●問16タスクスケジューリング
https://www.fe-siken.com/kakomon/24_aki/q17.html
短時間で出来るものを優先されていると、長時間でかかるものが
待たされるってことか。

●問20 OSS
https://www.fe-siken.com/kakomon/25_aki/q21.html
改変したら、その改変前のもとのソースコードも公開しないとダメってことで、
私が選んだイでは、他社の責任になるってことか。だからウなんだ。

●問24ヒューマンインタフェース
https://www.fe-siken.com/kakomon/26_haru/q23.html
良く使う機能を呼び出すことのできるマクロは便利だ。

●問25動画像の配信
https://www.fe-siken.com/kakomon/26_aki/q25.html
1フレームが800×600ピクセル、24ビットフルカラーってことか。
それが30フレームあるから、30倍か。

●問27データベース
https://www.ap-siken.com/kakomon/29_haru/q26.html
ムズカシイと思ったら、応用情報ドットコムからの引用です。
エにしてしまいました。
この問題のドラム式洗濯機って、売れていないから、
どの注文にもリンクしていないってこともあるのかな。
ちょっと私には難しいです。
明日も解説読んでみよう。

●問29SQL
https://www.fe-siken.com/kakomon/24_haru/q30.html
SELECTで指定した列を抜き出すだけだから、
集計はしない。だからイは、ち、が、う、だ、ろ!!なんだ。

●問43ISMS
https://www.fe-siken.com/kakomon/24_haru/q30.html
こちらのサイト様には、ITパスポート取得の際にもお世話になりました。
ISMSは情報の安全をを守るための取り組みで27001を基に適合性を評価している
ってことかも。

●問45HTTPoverTLS(HTTPS)
https://www.fe-siken.com/kakomon/25_haru/q44.html
これから通信を行うサーバが怪しいものではないってことを
確認することか。

●問50アジャイル開発
https://www.fe-siken.com/kakomon/29_haru/q50.html
ドットコムさんの解説の、
「主に効率性と保守性の向上を図るために行われる」というところが、
ポイントのように、私には思えました。

●問51ファンクションポイント
https://www.fe-siken.com/kakomon/23_toku/q52.html
見積もるっていうのがポイントだと思って選択肢を見ると、
全部に「見積もる」が含まれている( ;∀;)
もう1つのポイントは「機能による複雑さを見積もる論理的な」って所だな。

●問52構成管理
https://www.fe-siken.com/kakomon/24_haru/q51.html
ここでいう構成管理とは何か、どういったものがあるのか、がポイント、
かもね。多分・・・(=^・^=)
1受験生の立場ではエラそうに言えない。(令和2年3月現在)

●問53クリティカルパス
https://www.ap-siken.com/kakomon/26_aki/q54.html
応用情報ドットコムです。
同時並行的って所がポイントか。

●問59外部委託
https://www.ap-siken.com/kakomon/26_aki/q59.html
これも応用ドットコムです。
エスクロウ・・・エス苦労、、、なんちて。
ともかく、エスクロウが、第三者へ預託を意味することは大事だ。

●問60監査調書
https://www.fe-siken.com/kakomon/25_haru/q57.html
解説を読んで、改めて正解のアを読むと、
「実施記録」「根拠」が重要に思えました。

●問61ITポートフォリオ
(まぐれ当たりの為、確認)
https://www.ap-siken.com/kakomon/25_aki/q61.html
応用情報ドットコムです。
「情報」と「投資」がポイント

●問62労働時間
https://www.ap-siken.com/kakomon/23_toku/q63.html
これも応用情報ドットコムです。
あ、短縮できるのは、訪問「準備」期間だった!
良く問題読まないと。
では、1つずつ見ていきます。

5件当たりの訪問準備時間は、現在は1.5時間なので、
1件当たりが1.5÷5=0.3時間
これを0.1時間減らせるから、0.2時間になる。

5件あたりの顧客訪問時間は5.0時間だから、
1件あたりは1.0時間。

これで”その他の業務時間”をxにすると、役者はそろった!!
8時間以内に6件訪問するには、
(1.0+0.2)*6+x=8
7.2+x=8
x=0.8

現在の”その他業務時間”が1.5だから、
1.5-0.8=0.7時間短縮する必要があるんだ。

解説をみれば理解出来たので、
将来的に応用情報も考えたいです。

●問64ビッグデータ
https://www.fe-siken.com/kakomon/29_aki/q63.html
ドットコムです。
正解の選択肢はエで、ドットコムさんの説明の
「ビッグデータは、単にデータ量が多いというだけでなく、
扱う種類の多さに特徴がある」
がポイントだと思いました。

●問68事業活動分析手法
https://www.ap-siken.com/kakomon/22_haru/q66.html
応用情報ドットコムです。
キーワード:バリューチェーン・機能ごと・分析

●問70コア技術の事例
https://www.ap-siken.com/kakomon/26_aki/q70.html
応用情報ドットコムです。
簡単にまとめると、

コア技術:長年のノウハウによる核になる技術
・経済的利益
・希少性
・模倣されにくい

です。

●問76ABC分析
https://www.fe-siken.com/kakomon/20_aki/q73.html
A群は合計の70%個数「以上」
そこを間違えてしまいました。
875の70%は612.5なので、613以上がA群です。

●問78損益分岐点
https://www.fe-siken.com/kakomon/24_haru/q77.html
簿記取得でお世話になった皆様、本当に本当に、ゴメンナサイm(__)m
変動費率=傾き
固定費=切片
なので、図を見れば、A社の方が傾きが緩やか=変動比率が小さい

●問80個人情報保護法
https://www.sg-siken.com/kakomon/29_aki/q31.html
情報セキュリティドットコムさんです。
生きている人が対象なのか。
では、坂本龍馬の生年月日や住んでいる所は
個人情報の保護の対象にならないってことか。

たくさん間違えたので、長々となってしまいましたが、
読んで下さってありがとうございました。

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

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