LoginSignup
1

More than 1 year has passed since last update.

posted at

「hello, world」と表示されるだけのなんちゃってOS(ブートセクタ)を作ってみた。4/5時限目

おりょうの寺子屋、教師兼生徒を務めますわたくし、
おりょうが、本日は出張授業ですよ~ なんちゃって。

はじめに

HTC Advent Calendar 2020の22日目を担当します。
ONEJAPAN HACKATHONに参加したチームHTCのメンバー、おりょうです。

今回は私が絶賛挑戦中のOS作成の一部分を切り取ってご紹介しようかなと思います。
OSってみんな知ってるけどいざ作るとなるとなんだかハードルが高く感じますよね?
でも実際ちょっと興味ありません?
少なくともここまでの前説を読んでくれているあなたは、
少なからずOSに興味があるから見に来てくれているのでしょう。

そんなあなただけに今回は!
めちゃくちゃ簡単な「なんちゃってOS(ブートセクタ編)」をご紹介いたします。
合計3回に分けて紹介する予定です。

早速見ていきましょう!

概要

成果物:OS(フロッピーディスクで、フォーマットはFAT12)
アセンブラ:NASK
想定対象読者:OS自作をこれから始めようとしている人。

シラバス

1時限目:アセンブリ言語でソースコードを書こう①(ORG命令~entryラベルまで)
2時限目:アセンブリ言語でソースコードを書こう②(putloopラベル)
3時限目:アセンブリ言語でソースコードを書こう③(finラベル~msgラベルまで)
4時限目:出来たソースコードを機械語にアセンブルしてみよう。←今日はここ!
5時限目:PC/ATエミュレータを使ってOSを起動させてみよう。

4時限目:出来たソースコードを機械語にアセンブルしてみよう。

今回は、前回までの計3回の講義?で作成したソースコードをアセンブルしてみようという記事です。

なので、まだ過去3回分の記事を読んでいない方は先にそちらをご覧ください!
最悪ソースコードだけコピペしてくるだけでもいいですよ笑
では、ソースコードを準備できた方は次に進みますよ~~

アセンブラについてちょっとお勉強してみよう。

さて、ソースコードをアセンブルする前に、
今回使用するアセンブラ含め、アセンブラの概要について少し見ておきましょう。
色々ありますので、ご自身のお好きなアセンブラを使ってみてください。
※アセンブラによって文法が異なりますので、どのアセンブラを使うか決めてからソースコードを書くようにしましょう。
ソースコードよりもまず先にこの記事を書くべきでしたねー。完全に順番ミスです笑

まずはじめに、アセンブラの概要から、今回使用するアセンブラの紹介まで一気に行きます。

アセンブラの概要

アセンブラとは何なのかは、以下のサイトを少し読んでみてもらえれば理解できると思います。
【5分で覚えるIT基礎の基礎】だれでも一度はアセンブラを学んでおこう! 第1回 | 日経クロステック(xTECH)

アセンブラの種類

アセンブラにはいくつか種類があります。上記記事では「CASL II」が紹介されていましたね。
今回私が使用したアセンブラは「NASK」というものです。

これは、フリーソフトで有名なNASMによく似た文法で、でもNASMよりも自動最適化能力に長けたアセンブラです。
過去3回の記事で解説してきたソースコードもこのアセンブラを使用する前提で書かれたソースコードですので、
特にこだわりが無ければNASKをご使用いただくことをお勧めします。

追記

NASKの配布形体の見直しが行われ、基本、一般公開は打ち切りとなりました。
同様のアセンブラを見つけましたので、そちらをお使いください。
OSASK計画 - ダウンロード

アセンブルしてみよう

まあ、大々的にタイトルを用意してみたものの、
C言語とかでコンパイルしたことがある人はわかると思うのですが、
アセンブラを自身の環境に用意した後は、ただソースコードをアセンブラに読ませて機械語に翻訳させるだけなんですよね。

なので、アセンブラが用意できた方はもう後は用意したアセンブラの仕様に合わせてアセンブルしてみてください。
そしたら「.img」のディスクイメージファイルが作成されると思います。
このファイルが作成出来たら今回は無事目標達成です。

次回はこのファイルを使って、実際にOSとして起動させてみることにします。
実際にフロッピーディスクを用意してもいいんですが、コストの関係上、
今回はPC/ATエミュレーターを使用することにします。

では今回はここまで!

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
1