KATUBLO | エンジニアの日常BLOG

プログラミング、数学、旅行などを中心に役立つ情報をお届け

2019年01月27日

【アセンブリ言語】固定少数点から浮動少数点に変換するプログラムを実装

こんにちは。KATUOです。今回はアセンブリ言語で固定小数点から浮動少数点に変化するプログラムを実装していこうと思います。

 

アセンブラ言語 入力の2進固定少数点に制限をつける

[制限]

1:符号はつける

2:数字の先頭はかならず1

3:必ず16桁

 

 

アセンブラ言語 固定少数点をINで入力する

以下のコードを実装して、固定小数点を入力させる。

 

 

 

DS(領域確保命令)

[例]

LABEL1 DC 16 #LABEL1番地から16語の領域を確保

 

つまり、入力コードではDATAとLENにそれぞれ256語と1語の領域を確保したことになる。

 

+111.1を入力

+111.1を入力した時のメモリの内容を見ると以下のようになっている。

 

[番地]:[内容]

 

[DATA]:[+]

[DATA+1]:[1]

[DATA+2]:[1]

[DATA+2]:[1]

[DATA+3]:[.]

[DATA+4]:[1]

 

[LEN]:[6]

 

アセンブラ言語 符号部の処理

 

 

アセンブラ言語 指数部の処理

 

 

ST(ストア命令)

ここで簡単にストア命令に関して、解説する。

 

使用例を2つあげる。

 

1:ST  GR0,LABEL1 #GR0のデータを実行アドレスLABEL1にストア

2:ST  GR0,LABEL1,GR1 #GR0のデータを実行アドレス(LABEL1+GR0)にストア

 

といった形で用いられる。

ここでいう、ストアというのはデータをメモリに格納するといっても良いだろう。

 

 

アセンブラ言語 仮数部の処理

ここでは小数点が抜かれた、入力値を用いることを前提で処理を行う。

 

 

SUBL

SUBL(論理減算命令)について、簡単に解説する。

 

今回の場合だとリテラルを用いて記述されているので

SUBL  GR4, =#30

 

GR4-30(16)の結果をGR4に格納するという処理である。

 

 

またこのコードでやっていることを簡単にまとめると、

仮に小数点を除いた、1010101010101010で入力されたとすると

10進数の43690でGR3に保存するという処理になっている。

 

 

アセンブラ言語を学ぶ上でおすすめの参考書

 

64ビットアセンブラ入門―64ビットCPUの基本構造もやさしく解説

 

↑良さげな参考書。実際、大学の授業やネットで調べるよりも参考書でじっくり勉強した方が身につくと思います。将来有望な情報工学を学ぶ学生は基礎力を学生のうちに身に付けるのが大切であると思うので、リンク先の参考書を一目通して置くと良いかもしれません。

最後まで読んで頂き、ありがとうございました。
SNS等でのシェアが頂ければ幸いです!

プロフィール

@KATUO

現在都内私立大学に通う大学4年生。大学では電気電子工学を専攻。大学2年の夏頃に、プログラマーの長期インターン募集の広告が目に止まり、独学でプログラミングの学習を開始。現在は「ToC向け大規模サービスを運営するメガベンチャー」と「AIスタートアップ」でインターンで修行中。2020年4月からwebエンジニアとして社会人生活スタート。

広告

特集記事