OS自作入門 二日目

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


おしまい。
疲れた。


最終更新:2007年06月22日 17:11
ツールボックス

下から選んでください:

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