OS自作入門 二日目

「OS自作入門 二日目」の編集履歴(バックアップ)一覧はこちら

OS自作入門 二日目」(2007/06/22 (金) 17:11:38) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

*OS自作入門二日目のまとめ 自分のためのまとめなので、他の人には意味不かも。 **アセンブラ : ORG | origin , naskにこの機械語が実行時にPCのメモリのどこに読み込まれるのかを教える命令。PC/AT互換機では 0x00007c00 - 0x00007dff : ブートセクタが読み込まれるアドレス となっているのでこれに従って書かれている。 : JMP | jump , 見てのとおりジャンプ。ラベルに飛ぶ。 : MOV | move , 代入。 MOV AX,0 の様に使う。これは AX に 0を代入 する操作。 **レジスタ(16bit) : AX | accumulator , AH , ALに分かれている。各種演算向き。 : CX | counter , CH , CLに分かれている。カウンタ用。 : DX | date , DH , DLに分かれている。 : BX | base , BH , BLに分かれている。メモリの番地計算用。 : SP | stack pointer ,分かれていない。 : BP | base pointer ,分かれていない。 : SI | source index ,分かれていない。 : DI | destination index ,分かれていない。 **レジスタ(32bit) : EAX | : ECX | : EDX | : EBX | : ESP | : EBP | : ESI | : EDI | extend , 上位と下位に一応別れているが、明示的に使用できるのは下半分。 **セグメントレジスタ : ES | extra segment : CS | code segment : SS | stack segment : DS | date segment : FS | : GS | **ラベルの代入 MOV SI,msg labelの代入は番地の代入と同じ。 **メモリ上の番地 [SI] の様に書くと、それはメモリ上の番地を表す。 MOV BYTE [678], 123 と書くと、687番地(1byte)に123を2進数に直して格納する。 MOV WORD [678], 123 と書くと、678番地と679番地(合わせて2byte)に123を2進数に直した上位8bitを679番地に、下位8bitを678番地に格納する。 **Makefile こんな感じ。っていうかそのまま。書いたことほとんどないので、理解は出来るけどかけないと思う。-rってなんのオプション? # デフォルト動作 default : ../z_tools/make.exe img # ファイル生成規則 ipl.bin : ipl.nas Makefile ../z_tools/nask.exe ipl.nas ipl.bin ipl.lst helloos.img : ipl.bin Makefile ../z_tools/edimg.exe imgin:../z_tools/fdimg0at.tek \ wbinimg src:ipl.bin len:512 from:0 to:0 imgout:helloos.img # コマンド asm : ../z_tools/make.exe -r ipl.bin img : ../z_tools/make.exe -r helloos.img run : ../z_tools/make.exe img copy helloos.img ..\z_tools\qemu\fdimage0.bin ../z_tools/make.exe -C ../z_tools/qemu install : ../z_tools/make.exe img ../z_tools/imgtol.com w a: helloos.img clean : -del ipl.bin -del ipl.lst src_only : ../z_tools/make.exe clean -del helloos.img おしまい。 疲れた。 ----
*OS自作入門二日目のまとめ 自分のためのまとめなので、他の人には意味不かも。 **アセンブラ : ORG | origin , naskにこの機械語が実行時にPCのメモリのどこに読み込まれるのかを教える命令。PC/AT互換機では 0x00007c00 - 0x00007dff : ブートセクタが読み込まれるアドレス となっているのでこれに従って書かれている。 : JMP | jump , 見てのとおりジャンプ。ラベルに飛ぶ。 : MOV | move , 代入。 MOV AX,0 の様に使う。これは AX に 0を代入 する操作。 : INT 0x10 | interupt , 割り込み。割り込み番号10はビデオbios呼び出し。それぞれ必要なレジスタを設定してから呼び出すと値によってビデオ関係の様々な設定が行える。 **レジスタ(16bit) : AX | accumulator , AH , ALに分かれている。各種演算向き。 : CX | counter , CH , CLに分かれている。カウンタ用。 : DX | date , DH , DLに分かれている。 : BX | base , BH , BLに分かれている。メモリの番地計算用。 : SP | stack pointer ,分かれていない。 : BP | base pointer ,分かれていない。 : SI | source index ,分かれていない。 : DI | destination index ,分かれていない。 **レジスタ(32bit) : EAX | : ECX | : EDX | : EBX | : ESP | : EBP | : ESI | : EDI | extend , 上位と下位に一応別れているが、明示的に使用できるのは下半分。 **セグメントレジスタ : ES | extra segment : CS | code segment : SS | stack segment : DS | date segment : FS | : GS | **ラベルの代入 MOV SI,msg labelの代入は番地の代入と同じ。 **メモリ上の番地 [SI] の様に書くと、それはメモリ上の番地を表す。 MOV BYTE [678], 123 と書くと、687番地(1byte)に123を2進数に直して格納する。 MOV WORD [678], 123 と書くと、678番地と679番地(合わせて2byte)に123を2進数に直した上位8bitを679番地に、下位8bitを678番地に格納する。 **Makefile こんな感じ。っていうかそのまま。書いたことほとんどないので、理解は出来るけどかけないと思う。-rってなんのオプション? # デフォルト動作 default : ../z_tools/make.exe img # ファイル生成規則 ipl.bin : ipl.nas Makefile ../z_tools/nask.exe ipl.nas ipl.bin ipl.lst helloos.img : ipl.bin Makefile ../z_tools/edimg.exe imgin:../z_tools/fdimg0at.tek \ wbinimg src:ipl.bin len:512 from:0 to:0 imgout:helloos.img # コマンド asm : ../z_tools/make.exe -r ipl.bin img : ../z_tools/make.exe -r helloos.img run : ../z_tools/make.exe img copy helloos.img ..\z_tools\qemu\fdimage0.bin ../z_tools/make.exe -C ../z_tools/qemu install : ../z_tools/make.exe img ../z_tools/imgtol.com w a: helloos.img clean : -del ipl.bin -del ipl.lst src_only : ../z_tools/make.exe clean -del helloos.img おしまい。 疲れた。 ----

表示オプション

横に並べて表示:
変化行の前後のみ表示:
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。