あんたいとる

無駄の中に宝がある!

30日でできる! OS自作入門(八日目)

マウス制御と32ビット制御切り替え

新しく学んだ知識

  • マウスのボタンの状態はマウスから送られてくるデータ(3バイト)の1バイト目の下位3ビットに収まっている。
  • キーボードコントローラのおまけ出力ポートに、0xdfというデータを出力するとA20GATE信号線がONになる。A20GATE信号線は全メモリを使用可能にするためのもの。
命令 説明
NOP  何もしない命令。
IMUL 掛け算命令。
SUB 引き算命令。
SHR 右シフト命令。SHR ECX,2だと ECX /= 4(4で割るという意味)になる。1ビット右にシフトさせるのは 1/2(2で割る)のと同じことになる。
JZ jump if zero. 直前の計算結果がゼロならジャンプする
JNZ jump if not zero. JZの逆。
ALIGNB 切がよくなるまでDB 0 を入れなさいといウ命令。
関数 説明
memcpy memcpy(転送元番地, 転送先番地, 転送サイズ)

はりぼてOSのメモリマップ

0x00000000 - 0x000fffff : 起動中にいろいろ使うけど、その後は空き(1MB)
0x000fffff - 0x00267fff : フロッピーディスクの内容記憶用(1440KB)
0x00268000 - 0x0026f7ff : 空き(30KB)
0x0026f800 - 0x0026ffff : IDT(2KB)
0x00270000 - 0x0027ffff : GDT(64KB)
0x00280000 - 0x002fffff : bootpack.hrb(512KB)
0x00300000 - 0x003fffff : スタックなど(1MB)
0x00400000 -            : 空き

8日目の感想

8日目となると最初の3日目あたりまでにやった内容を忘れていしまっているので、復習しないと。。。