アセンブラCASL2右シフトで「デベソ」か、「ち、が、う、だ、ろ!!」

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

■ 関連記事 ■

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

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

GR1に設定された数が、
偶数だったら「デベソ!!」
奇数だったら「ち、が、う、だ、ろ!!」
と表示されるプログラムを作りました。

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

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

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

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

まずは、偶数の例。

このように、GR1に4を設定します。

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


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

オーバーフローフラグOFは0なので、
オーバーフローしない、つまり偶数です。

「DEBESO(デベソ)‼」と出力されました。

次に奇数の例。

このように、GRに7を設定します。

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


右シフトすると、GRが3になりました。


オーバーフローフラグOFが1になりました。
オーバーフローしたので、基数です。

「CHI,GA,U,DA,RO!!(ち、が、う、だ、ろ!!)」
が出力されました。

では、命令文です。


TEST START
RPUSH
LAD GR1,7 ;数を指定
SRL GR1,1 ;1ビット右へ
JOV CHIGAU
OUT GUUSU,LEN
JUMP FIN
CHIGAU OUT KISUU,LEN2
FIN RPOP
RET
GUUSU DC ‘DEBESO!!’
LEN DC 8
KISUU DC ‘CHI,GA,U,DA,RO!!’
LEN2 DC 16
END

お疲れ様でした。
CASL2のおススメ本です。

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

アセンブラCASL2嫌なヤツの名前とバカ!!

この記事ではアセンブラ言語で、ストレス解消しながら単純な入出力が学べます。
「嫌なヤツの名前」と「バカ」を出力することによって、アセンブラの入門の入門が身に付きます。

■ 関連記事 ■

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

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

アセンブラCASL2を使って、
嫌な奴の名前の後に、「~のバカ!!」と、
ローマ字で入力するプログラムを作りました。


TEST START
IN YATSU,SUU ;嫌な奴の名前を入力
OUT YATSU,SUU ;その名前を文字数分出力
OUT MOJI,LEN ;の、バカを文字数分出力
RET
YATSU DS 30 ;30文字まで入るようにする
SUU DS 1 ;文字数
MOJI DC ‘NO BAKA!!’ ;の、バカ
LEN DC 9 ;の、バカの文字数
END

アセンブルして、実行して見ます。
嫌な奴を仮に「五木不利太郎」として、
「GOKIFURI TAROU」を入力して、
Enterを押します。

出力先に、名前が表示されました。

更に実行を押していくと、

「NO BAKA!!」
まで出力されました。

お疲れ様でした。

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