自己紹介
はじめまして。色んなことに挑戦してエラーで諦めてしまう小6のtatsuです。文章の所々間違っていると思いますがよろしくです。
環境構築
VirtualBox https://www.oracle.com/technetwork/jp/server-storage/virtualbox/overview/index.html
バイナリエディタ Hex Fiend https://ridiculousfish.com/hexfiend/
VirtualBoxで起動する時のやり方はこちらの方が詳しく書いていますのでそちらをご覧ください https://qiita.com/nao18/items/e1b9b77f154e4d5239e5
mac用nask https://shrimp.marokun.net/osakkie/wiki/?tolsetOSX
やってみる
まずhelloos.imgというディスクイメージを作ります。起動すると画面に「hello, world」と出るらしいです。バイナリエディタを使うのは初めてでアプリに関しても使いにくいなと思いました。筆者はmacで作業しているのですが、探してもいいエディタが見つからず、引っ越しを転々と続けています。
ここから、VirtualBoxを起動したのですが問題発生。なぜか、<がずっと表示され続けています。やめてくれよ....(筆者、エラーにはとことん弱い)
それもそのはず。一回読み間違えてしまい、60〜70らへんで二回も打ち続けてしまいました。これ判明するの1時間後ってマ?そして答えが分かったところでコードの書き換えをし、無事起動することができたとか。
アセンブラでhello workを出してみる
; hello-os
; TAB=4
; 以下は標準的なFAT12フォーマットフロッピーディスクのための記述
DB 0xeb, 0x4e, 0x90
DB "HELLOIPL" ; ブートセクタの名前を自由に書いてよい(8バイト)
DW 512 ; 1セクタの大きさ(512にしなければいけない)
DB 1 ; クラスタの大きさ(1セクタにしなければいけない)
DW 1 ; FATがどこから始まるか(普通は1セクタ目からにする)
DB 2 ; FATの個数(2にしなければいけない)
DW 224 ; ルートディレクトリ領域の大きさ(普通は224エントリにする)
DW 2880 ; このドライブの大きさ(2880セクタにしなければいけない)
DB 0xf0 ; メディアのタイプ(0xf0にしなければいけない)
DW 9 ; FAT領域の長さ(9セクタにしなければいけない)
DW 18 ; 1トラックにいくつのセクタがあるか(18にしなければいけない)
DW 2 ; ヘッドの数(2にしなければいけない)
DD 0 ; パーティションを使ってないのでここは必ず0
DD 2880 ; このドライブ大きさをもう一度書く
DB 0,0,0x29 ; よくわからないけどこの値にしておくといいらしい
DD 0xffffffff ; たぶんボリュームシリアル番号
DB "HELLO-OS " ; ディスクの名前(11バイト)
DB "FAT12 " ; フォーマットの名前(8バイト)
RESB 18 ; とりあえず18バイトあけておく
; プログラム本体
DB 0xb8, 0x00, 0x00, 0x8e, 0xd0, 0xbc, 0x00, 0x7c
DB 0x8e, 0xd8, 0x8e, 0xc0, 0xbe, 0x74, 0x7c, 0x8a
DB 0x04, 0x83, 0xc6, 0x01, 0x3c, 0x00, 0x74, 0x09
DB 0xb4, 0x0e, 0xbb, 0x0f, 0x00, 0xcd, 0x10, 0xeb
DB 0xee, 0xf4, 0xeb, 0xfd
; メッセージ部分
DB 0x0a, 0x0a ; 改行を2つ
DB "hello, world"
DB 0x0a ; 改行
DB 0
RESB 0x1fe-$ ; 0x001feまでを0x00で埋める命令
DB 0x55, 0xaa
; 以下はブートセクタ以外の部分の記述
DB 0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00
RESB 4600
DB 0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00
RESB 1469432
なんで拡張子がnasなのかと言いますと、本の執筆者さんが「nask」というアセンブラを作ったそう。たまげたなぁ...あ、ちなみにmacでCatalinaの場合はこのnask使えません。このnaskは32bit版しかなく、Catalinaは32bitに対応していないため私的には詰んでいるかと...残念ですが...
では早速起動してみましょう!!!
ちゃんと起動することができました!正直難しすぎてよくわからないのは内緒です。
/|_________ _ _
〈 To BE CONTINUED…//// |
\| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄~ ~  ̄
追記
編集リクエスト有難うございます。ある方へのご返信を誤って空白にしてしまいました。本当に申し訳ございません。
@shiracamus リクエスト送っていただき有難うございます。了解です・
既存タグに変更(タグをクリックしてフォローしたり関連記事を読んだりできます。タイトルと本文に書いてあれば検索キーワードになります) by shiracamus 2019/11/17 02:09