今日は 4-6 から。アセンブラといえば、割禁。割禁といえばアセンブラというほど、重要な割禁(割り込み禁止)が、ようやく出てきました。割り込みフラグは EFLAGS レジスタの ビット 9。EFLAGS には他にもキャリーとかゼロフラグなどがあります。ということで、フラグレジスタも登場しましたね。割禁の許可、禁止 は 1 命令で出来るらしい。とか説明しておきながら、CPU の割込み動作事態の説明は後でするとのこと。今回は VGA のパレット設定のときには割禁にしなくてはいけませんというお話だけ。おそらくキーボード、マウスの制御まで割り込みの詳細な話はお預けの模様です。あくまでも流れ重視の OS 作りです。30 日で終わらせるというのですから流れ最優先、それは仕方ないことです。この流れ重視の体裁は、伏線が多いミステリーなもので、OS 作りとは別の意味でドキドキしています。もちろん撒いた伏線は全部回収してくれると信じてます(そうでないと困ります)。
パレットの読み書きは特定のメモリにパレット番号を設定して、特定のアドレスにデータを R,G,B の順に 3 回書けばオッケイ。このとき命令は MOV じゃなくて、OUT を使うとのこと。つまり、PC の CPU はメモリアドレスとと I/O アドレスが別々に I/O マップド I/O 方式なわけです。メモリアドレスも I/O アドレスも同じ空間を使うメモリマップド I/O 方式ならなら入出力全てを C 言語で書けるわけですが、今回は入出力用の関数をすべてアセンブラで用意することとなりました。
以上、4-6 終わり。











コメントする