新しく学んだ知識
命令について
命令 |
説明 |
ORG |
機械語が実行時にPCのメモリ読み込まれることになるかを教えてくれる |
JMP |
指定した場所にジャンプする |
[word]: |
ラベルの宣言。JMP命令の飛び先の指定などに使う。[word]の部分には任意の単語を使用できる。 |
MOV |
代入。MOV AX, 0 はAXに0を代入という意味。 |
レジスタ名 |
説明 |
AX |
アキュムレータ(accumulator:累積演算機という意味) |
CX |
カウンタ(counter:数を数える機会という意味 |
DX |
データ(data:データという意味) |
BX |
ベース(base:土台とか基点という意味) |
SP |
スタックポインタ(stack pointer:スタック用ポインタ) |
BP |
ベースポインタ(base pointer:ベース用ポインタ) |
SI |
ソースインデックス(source index:読み込みインデックス) |
DI |
デスティネーションインデックス(destination index:書込みインデックス) |
ES |
エクストラセグメ(extra segment:おまけセグメント) |
CS |
コードセグメント(code segment) |
SS |
スタックセグメント(stack segment) |
DS |
データセグメント(data segment) |
FS |
本名なし(おまけセグメント2) |
GS |
本名なし(おまけセグメント3) |
※AXなどXで終わるレジスタは16bit。上位8bitはAH、下位8bitはALと指定する。B~Dのレジスタも同様。
※32bitレジスタの場合は先頭にEが付く。EAXなど
プログラムの解説
プログラム |
解説 |
MOV AL,[SI] |
ALレジスタにSIレジスタが指すメモリの内容を代入 |
MOV BYTE [687],123 |
メモリアドレス687に、123を代入(BYTEは8bitを表す) |
MOV WORD [687],123 |
メモリアドレス687に、123を代入(WORDは16bitを表すため、8bitずつ687と688に代入される) |
ADD SI, 1 |
SIレジスタに1を足す |
CMP AL, 0 |
ALレジスタと0を比較する |
JE fin |
比較の結果が等しければfinにジャンプ |
INT 0xNN |
ソフトウェア割込み。 |
HLT |
CPUを停止(待機状態に)する) |
ipl.bin : ipl.nas Makefile
../z_tools/make.exe ipl.nas ipl.bin ipl.lst
用語 |
説明 |
ターゲット名 |
ipl.binの部分。"make ターゲット名" という形で使う |
依存ファイル |
"ips.nas Makefile"の部分。ターゲットをmakeするときに必要なファイル。"ターゲット名:"の後にスペース区切りで記述する。 |
コマンド |
"../z_tools~"の部分。実行するコマンドを記述する |
makeコマンドのオプション
オプション |
説明 |
-r |
組み込みの暗黙的ルールを使用しない。 また、添字規則で使うデフォルトの添字のリストも全て消去する。 |
-C dir |
makefile を読み込むなどの動作の前に、ディレクトリ dir に移動します |
2日目感想
まだついていけている感じ。INT命令のところを詳しく知りたい。