OS自作入門 2日目

○二日目
 アセンブラ学習とMakefile入門
 
 ▼アセンブラ
  ORG命令 読み込まれるメモリの番地を指定する。
  JMP命令 飛び先を指定してジャンプする。
   ラベルを指定した場合はラベルから実行される。(ラベルはプログラムのアドレスを指す。)
  MOV命令 代入命令。値、ラベル、レジスタを指定する。
  ADD命令 足し算命令。
  CMP命令 比較命令。
  JE命令 条件ジャンプ命令。条件を満たす場合はジャンプする。
  INT命令 ソフトウェア割り込み命令。BIOSの関数を呼び出す。
  
  ※[]を使用するとメモリ上のデータを指定可能。
   例 [XX]:XXがアドレスを指定する。
   →指定可能なレジスタは「BX,BP,SI,DI」のみ。
   
 ▼レジスタ
  AX アキュームレータレジスタ(演算レジスタ)
  CX カウンタレジスタ
  DX データレジスタ
  BX ベースレジスタ
  SP スタックポインタ
  BP ベースポインタ
  SI ソースインデックス(読み込みレジスタ)
  DI ディスティネーションインデックス(書き込みレジスタ)

※これらは16ビットのレジスタ32ビットのレジスタの場合はそれぞれ「E」を頭につける。
 また、AX,CX,DX,BXレジスタはそれぞれAL,AH CL,CH DL,DH BL,BHのように8ビットのHigh-Lowレジスタに割り当てられる。
 32ビットレジスタの場合、下位16ビットをAX,CX,DX,BXとして使用できるが上位16ビットを使う場合はビットシフトする必要がある。
 
 ▼セグメントレジスタ
  ES エクストラセグメント
  CS コードセグメント
  SS スタックセグメント
  DS データセグメント
  FS ???
  GS ???

  ※セグメントレジスタは指定しない場合、デフォルトでDS:を指定したことになる。