アセンブラで観光地巡り

この記事ではアセンブラ言語で、入力された数値によって処理を分岐させ、観光地の名称が表示されるプログラムを作りました。JNZとか分岐命令では過去問でも見かけました。

■ 関連記事 ■

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

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

CASL2の勉強で、いつも、
「う◎こ」とかを例題にしていますが、
たまには綺麗な景色を紹介するプログラムを紹介します。
この記事では関連の写真を載せますが、
プログラムを実行しても、写真は出てこないので、あしからず。

コロナの自粛で、不要不急の外出を控えているため、
どこにも写真撮影に行けないので、こういったプログラムを作ってみました。

switch文です。
今日は分岐の勉強をしました。
間に合うか~~~試験に。

で、プログラミングの話ですが、
例えば「1」を入力すると横浜

「2」は東京スカイツリー

「3」は御宿

「4」はお台場

と表示されるようにしました。

プログラムはこちらです。


SPOT START
RPUSH

IN BASHO,LEN
LD GR1,BASHO
CPA GR1,=’1′
JNZ L2
OUT BASHO1,LEN1
JUMP FIN

L2 CPA GR1,=’2′
JNZ L3
OUT BASHO2,LEN2
JUMP FIN

L3 CPA GR1,=’3′
JNZ L4
OUT BASHO3,LEN3
JUMP FIN

L4 OUT BASHO4,LEN4
FIN RPOP

RET

BASHO DS 256
LEN DC 1
BASHO1 DC ‘YOKOHAMA’
LEN1 DC 8
BASHO2 DC ‘SKY TREE’
LEN2 DC 8
BASHO3 DC ‘ONJYUKU’
LEN3 DC 7
BASHO4 DC ‘ODAIBA’
LEN4 DC 6

END

今日も、ありがとうございました(=^・^=)

CASL2のおススメ本です。

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

アセンブラ、スタックを使ってUNKO逆取り出し!

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

■ 関連記事 ■

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

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

コロナ自粛期間中に引きこもりながら、
基本情報技術者試験の言語COMET2とかいう架空の
コンピュータのアセンブラ、CASL2のお勉強をしています。
また、変なプログラムを思いついたので、記事にします。


これ、逆から読むとUNKOになります。
スタックと言う、イメージ的に積み木みたいのを使って、
「OKNU」を「UNKO」にします。
(文字の処理が終わったかどうかの目印に、「0(ゼロ)」を使っています。)

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

ところで、この記事をご覧のアナタ、そう、あなたです!!
こんな図を作って、ヒマじゃないか、って思ったでしょう。
自粛期間中なので、忙しくはないですけれど、
この記事を更新したら、基本情報技術者試験の午後対策をします。

では、話し戻します(=^・^=)

スタックには、このように、1文字ずつ積み上げていき、
一番上(最後の文字)から順に取り出します

すると、「OKNU」が「UNKO」になります。
元の文字列「OKNU」は配列MOJI[]に入っています。
スタックを使って出力用に格納する文字列は、DASU[]です。
どちらも、GR1を使ってアドレスを指し示します。
GR2は、文字列をスタックに積んだりします。
また、GR2は、出力用文字列に格納もします。


出力結果です。

機械語命令です。

TEST START
RPUSH


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

MOJILOOP LD GR2,0,GR1 ;GR2にMOJIから1文字ずつ読み込む
CPA GR2,=0 ;文字の最後まで行ったか確認
JZE DASUYOMI ;最後まで行ったら、逆順に取り出す準備
PUSH 0,GR2 ;読み込んだ文字をスタックに積む
LAD GR1,1,GR1 ;MOJIのアドレスを1つ後に移動
JUMP MOJILOOP ;読み込みとスタック格納が終わるまで繰り返す

DASUYOMI LAD GR1,DASU ;GR1に出力用の配列の先頭アドレスを設定
DASULOOP POP GR2 ;スタックから1文字取り出してGR2に入れる
CPA GR2,=0 ;文字の取り出しは最後まで終わったか確認
JZE OWARI ;終わったらOWARIにジャンプ
ST GR2,0,GR1 ;処理中ならスタックからGR2に取り出した文字をDASUに格納
LAD GR1,1,GR1 ;出力用配列のアドレスを先に進める
JUMP DASULOOP ;出力用配列に格納が終わるまで繰り返す

OWARI OUT DASU,LEN
RPOP
RET

MOJI DC ‘OKNU’ ;う◎この逆さ文字配列
KETSU DC 0 ;おケツは末端の処理終了判別に使う文字
DASU DS 100 ;う◎この出力用文字列
LEN DC 4 ;文字数4文字
END

お疲れ様でした。
今日も快便!!
頑張って出すもの出しましょう!!

CASL2のおススメ本です。

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

アセンブラ、配列でSTAYHOME!

この記事ではアセンブラ言語で、配列と添字について学べます。
文字列を1文字置きに出力して、「STAYHOME」を取り出します。

■ 関連記事 ■

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

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

今、(2020年令和2年5月8日現在)ここ東京では、
コロナの緊急事態宣言延長が出ています。

ひとりひとりが不要不急の外出をお控えして頂けるよう、
私に出来ることは何かあるのか、考えた所、
数日前にYouTubeで動画を作ったり、
今日、アセンブラ(CASL2)を使って、呼びかけの機械語命令を
作ったりしていました。

まずは、こちらの動画をご覧下さい。

あとは、今日作ったアセンブラのプログラムです。
配列を使って、「STAY HOME」と表示します。
下の配列MOJIから1文字置きに抽出するよう、
アドレスを指し示すのに使ったGR1は2つずつ加算、
表示用文字列DASUの格納用アドレスに使うGR2は
インクリメントしています。

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

機械語命令は、こうなりました。

結果はこのようになります。

TEST START
RPUSH


LD GR1,=0 ;STAYHOMEのアドレス
LD GR2,=0 ;出力用アドレス

LOOP
LD GR3,MOJI,GR1 ;STAYHOMEの読み込み
ST GR3,DASU,GR2 ;出力用に格納
LAD GR2,1,GR2
CPA GR2,=9
JZE FIN

LAD GR1,2,GR1
JUMP LOOP

FIN
OUT DASU,LEN

RPOP
RET

MOJI DC ‘SITEANYI 3HIORMUE’
DASU DS 9
LEN DC 9

END

今日も、ありがとうございました。
あなたがこの記事をご覧の時には、コロナ終息していて欲しいです。

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

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