2005-01-01から1年間の記事一覧

ストリング命令

アセンブラの入門書だと、ほとんどが 2進法だ16進法だ、レジスタがどうとかこうとか あまりに基本的な解説が始まり、それで半分終わってしまう。(うんざりですね) ここでは、これらは飛ばします。 自分で勉強してください。 とても詳しくて、お勧めなHPと…

COMファイルの構造

ここで、COMファイルの詳細を調べておきます。 MS-DOSで実行可能な COMファイル は、 64Kバイトまでのメモリしか使えないが、単純で セグメントを意識せずにプログラムが作れます。 特徴としては、 100hからロードされ、実行される。 先頭部分に PSP*1 と呼…

Hello.com を動くようにする

MS-DOSでは INT 21h (AH=機能番号) でほとんどの機能を実行しています。 初期の頃に作った Hello.com プログラムでは、 INT 21h の内の 機能番号 機能 09h 文字列の表示 (←DS:DX=表示文字ポインタ。'$'まで) 08h キー入力 (→ALにキーコード、…

ベクタMAP

x86の(というか,AT互換機の)割り込みの資料はここを参考に! ↓ http://www.asahi-net.or.jp/~WR7S-NKMR/BeOS/Documents/IRQ.htmlここなら、一覧表になってます。 ↓ http://www.ctyme.com/intr/int.htm AT互換機は、 INT 00h〜FFh の 256個に対し…

メモリMAP

PC/AT互換機(あえてDOS/V機とは呼ばない事!)の メモリMAPを調べてみます。 OSDev で かなり詳細に調べてますね! ここはいつも参考になる。 素晴らしい!! ↓ http://community.osdev.info/index.php?%28AT%29memorymap ちなみに、LINUX…

への未練

TASMの使用を あきらめるには、いまひとつ 踏ん切りがつかず、文法の違いを明らかにするためにも TASMで書き直してみました。以下が、TASMのアセンブラでエラーなく通るソースです。 しかし、日記に全ソースを公開するのは、無謀かな? とにかく、長いなー。…

(局所)ラベルの付け方 ルール

アセンブラの場合、データラベルやサブルーチンのエントリラベル以外 ほとんど、無意味なラベルが 多数 必要になってきます。 ラベルが重複しては、エラーになるし、かといって 重複しない無意味な名前を付けるほうが、苦痛となります。 そこで、工夫された…

動作の確認

昨日の 書き換えたソースファイルを使って、正しく動くかどうか 動作の確認を行います。 Hebo OS の機能や動作は、まったくオリジナルそのままです。 必要なものは、 ① 昨日の日記に載せた aOS.asm ファイル。 ② HeboOS で 使った 文字フォント charfont.bin…

での書き換え

Hebo OS の ソースの途中でできる os.3as のソースファイルから NASM のアセンブラに通るように 変更を加えます。 同時に、プログラム内容の解析と、 コメント追加も行います。 なかなか、興味深い内容で、勉強になります。 こんな短くて、ちゃんと動作する…

資料集め

OSを創るにあたっての必要な資料を探す。 まず、BIOSの資料: OSが無いので、当然、MS-DOSの INT 21hなどは使えない。 その代わりとなる、基本的なキー入力やDISKアクセスの機能を提供する、PCにもともと組み込まれているプログラムの資料が必要となる。 …

の覚え書き

OSを作っていくに当たって、デバッグが出来ないと非常につらい。 よって、デバッグ環境についての検討を行う。候補として、 ① OllyDbg (Win用のフリーのデバッガ) ② Turbo Debugger (ボーランドのデバッガ) ③ SYMDEB (DOS時代のデバッガ) ①は、先に取…

アセンブラの違い    [アセンブラ][MASM][NASM]

特に MASM32 に こだわるわけではないですが、移植の際に多少でも楽になるよう、気がついた NASM との違いを ここに書き留めておく。 1)擬似命令の違い。 ① assume命令を使わない。 assume cs:CSEG, ds:CSEG, ss:CSEG は削除する。② DB命令の違い。 MASM…

NASMに決定

いろいろ、悩みましたが使うアセンブラは NASM に決めました。 フリーのアセンブラで、(海外製ですが) インターネットから ダウンロードできます。 入手先 URL http://www.web-sites.co.uk/ また、上の本を買えば CDで付いてきます。 (現時点でのバージョ…

ついでに EXEサンプル (もう一つ)

もう少しだけ、複雑なプログラムを作ってみましょう。動作は、 ① 画面に、”Hello”と表示。 ② 何かキーを押すと、もう一度、①へ。 スペースキーを押すと、すぐに④へ。 ③ 最大でも、3回、Helloを表示。 ④ その後、”EXE File.”と表示。 ⑤ キ…

とりあえず EXEサンプル

先日のCOMプログラムとまったく同じ動作を EXE形式の実行ファイルにて、行わせるための プログラム例 です。 違いといえば、セグメントをちゃんとセットしてあげないといけない点と、スタックの領域が必要な点ぐらいです。 まー 先のCOMプログラム…

おきまりのCOMサンプル

さっそく、MASMを使って実際に実行できるCOMファイルを作ってみましょう。インターネットで、アセンブラ入門といえば、必ず出ていそうなサンプルプログラムですが・・・ (笑)実行すると、画面に Hello! と表示し、キーを押すと終了します。Windows…

いにしえのMASM

x86系のアセンブラは、かなり昔からある MASMが基本だったようですね。 これを入手するには・・・ 単純なプログラムのためか、 PC−9801用の、MASM Ver4 でも、ちゃんとWindowsのコマンドプロンプトで動作します。 (当初は、MS-DOSを買えば…

環境を作る

いまどき、DOS環境で、しかも『アセンブラ』で プログラムを開発しよう などという人はめずらしいとは思います。 最近では、PCを買えば Windosw XP がほとんどですが、これも数年もたたずに 変わってしまうはず。(これも困ったものですが・・・…

アセンブラの選択

まずは、開発用のアセンブラを選んでます。 選択対象は、 1) MASM (DOS版) 2) MASM32 (フリーのアセンブラ、MASM互換) 3) NASM (フリーのアセンブラ) 4) TASM (ボーランド社製) 5) NASK (OSASK関係のフリーアセンブラ)他にもいろいろあ…

技術メモ

先日の ヘボOSのサンプルで 実行可能なFD作成までに どのような事を行っているのかを解析したメモです。 これは、適当に読み飛ばして置いてください。 1.開発環境とアセンブラ OSを自作するにはそれなりの開発環境が必要ですね。 それを、できれば無…

最初のステップ

自分で 独自のOSを 作ろうとする際、何から始めたら良いのか、非常に敷居が高いと思います。 いきなり、OSASKのソースを見ても、さらにはLINUXのソースを見ても、解析すら難しいでしょう。 (何よりも、できるだけ 今までのOSを参考にしないで…

"OS自作"って何?

OS(おーせす おーえす)の詳しい解説をするつもりはありません。 必要ならHPで調べてみてください。では、 ”自分でOSを作る”とは、どんなことかを実感してみましょう。同じように OSを自分で作っている「先輩」であり、かなり成功していると思われ…

OS自作

自分で OS(オペレーション・システム)作ろうと思います。 冗談ではなく、 まー お遊び程度に。 何だそれは?と思う人も多い事でしょう。 (写真はOSASKのダウンロードHP画面) 今、パソコンを普通に使っていれば、Windows が最初から入っていて、それをな…

Hello.COM が 動く。

手抜きの DOS互換ファンクションコール を実装。 ;----------------------------------------------- ; アセンブラ・プログラムのサンプル COM用 ; ; アセンブラ: NASM ; ; 2005.06.10 簡単な INT 21 実装 ; 2005.05.12 "OS.3as" -> "aOS.asm" ; ; >nasm …

TASM版 Hebo OS ソース

;----------------------------------------------- ; アセンブラ・プログラムのサンプル COM用 ; ; 2005.05.12 "OS.3as" -> "aOSt.asm" ; ; アセンブラを NASK → NASM→ TASM に変更。 ; ;① WORD → word ptr ; BYTE → byte ptr ; しかも、メモリからのロード…

NASM版 Hebo OS ソース

;----------------------------------------------- ; アセンブラ・プログラムのサンプル COM用 ; ; 2005.05.12 "OS.3as" -> "aOS.asm" ; ; アセンブラを NASK → NASM に変更。 ; ; >nasm ファイル.asm -fbin -o ファイル.com ; でCOMファイルができる。 ; ;…