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

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

<<関連記事>>

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

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

今日は、13を「0000000000001101」を表示するプログラムを作りました。
出力結果です。

左に1ビットシフトして、1だったらオーバーフローするので、
JOVで1を表示する処理、0だったらJOV以外の処理に分岐します。
GR1に13を設定します。

出力用の配列の先頭アドレスをGR2に設定します。
ループカウンタをGR3にします。

そのイメージです。

プログラミングのコードはコチラです。

TEST START
RPUSH

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

LOOP CPA GR3,=0 ;ループ終了条件
JZE FIN
SLL GR1,1 ;13などの数字を1ビット左へ
JOV KISUU ;「1」つまり、オーバーフローしていたらKISUU(奇数)へ
LD GR4,=’0′ ;先頭ビットが0、オーバーフローしていない、偶数の処理
ST GR4,0,GR2 ;「0」を出力用配列へ格納
JUMP TSUGIHE ;次のビット処理の準備

KISUU LD GR4,=’1′ ;先頭ビットが1、オーバーフローした、基数の処理
ST GR4,0,GR2 ;「1」を出力用配列に格納

TSUGIHE LAD GR2,1,GR2 ;配列の添え字を1つ先へ進める
LAD GR3,-1,GR3 ;ループカウンタ減算
JUMP LOOP

FIN

OUT DASU,LEN
RPOP
RET

DASU DS 16
LEN DC 16
END

今日も、読んで下さってありがとうございます(=^・^=)
またなんか面白い事思いついたら記事にします。

CASL2のおススメ本です。

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

投稿者: nekosiestr

プログラミング学習中のロスジェネ(就職氷河期世代)の発達障害者です。 宜しくお願いします。 趣味で写真を撮っています。 プログラミングは、GAS/HTML/CSS/JavaScript/jQuery/PHP、 発達障害は、自閉症スペクトラムASD/ADHD、その他双極性障害やHSP(5人に1人の繊細さん)などの生きづらさを抱えておりますが、それでも楽しく生きて行きたいです!! 写真は、以前はコンパクトデジカメ、現在は、OLYMPUSミラーレス一眼を使っています。