低レイヤーのメモ

アセンブラ

定義EQU

  • 0x0A ラインフィード(LF)、カーソルを一行下げる
  • 0x0D キャリッジリターン(CR)、カーソルを左端に戻す

基数のPrefix

  • 0b00 2進数
  • 0o00 4進数
  • 0d00 8進数
  • 0x00 16進数

データ定義

  • DB: Define Byte, 1byte
  • DW: Define Word, 2byte
  • DD: Define Double word, 4byte
  • DQ: Define Quad word, 8byte

セクション

  • .text ROMに配置(書き換え不可)
  • .data RAMに配置(書き換え可能)

ロケーションカウンタ

  • $$ : セクション開始位置
  • $ : セクション先頭からのオフセット

マクロ

定義

%macro <マクロ名> <引数の数>
...
%endmacro

%%: マクロ内ローカルラベル

C言語呼び出し

cdecl

BIOS

  • 電源投入後最初に起動される
  • 関数の集まり
  • ハードウェア制御が可能
  • ソフトウェア割り込みで実装
    • 割り込み番号で関数を区別する
  • 512バイトをロードする

BPB(BIOS Parameter Block)

ディスクアクセス時にBIOSで必要とする情報

IPL(Initial Progaram Loader)

ブートプログラム。BPBのあとに配置される。 BIOSのプログラムの実行は先頭から実行されるので、ジャンプ命令でIPL飛んでから実行される。

CPU命令

アセンブル: ニーモニックから機械語への変換

ソフトウェア割り込み

  • INT <src> ソフトウェア割り込み

    • 事前に設定された割り込みベクタテーブルを使って、指定されたベクタ番号のセグメントとオフセットをCS、IPレジスタに設定する。
  • IRET 復帰

    • 割り込み処理からの復帰