構造体と文字表示とGDT/IDT初期化
新しく学んだ知識
構造体
struct BOOTINFO { /* 構造体名 */ char *vram; /*構造体のメンバのデータ型 */ int xsize, ysize; ... }; struct BOOTINFO abc; /* 構造体 BOOTINFO型の変数 abcの宣言 */ struct BOOTINFO *abc; /* 構造体 BOOTINFO型を指すポインタ変数 abcの宣言 */ abc = (struct BOOTINFO *) 0x0ff0;
文字表示
extern char hankaku[4096];
で文字を外部から読み込むようにしてから、画面に文字が表示されなくなった。
hankaku.txtを makefont.exeで hankaku.binに変換し、その次に bin2obj.extで hankaku.obj に変換する箇所が上手く変換出来ていないように思う。
原因の追究はあきらめてhankaku.txtをC言語に変換したファイル というのがあったので、このファイル(hankaku.c)を hankaku.gas→hankaku.nas→hankaku.objへ変換する方法で対処(あわせてMakefileを修正)。
spintfの使い方
#include <stdio.h> sprintf(番地, 書式, 値, 値, 値...)
書式で使える指定 | 説明 |
---|---|
%d | ただの10進数 |
%5d | 5桁で10進数。123だったら" 123"のようにスペースを入れて5桁にする。 |
%05d | 5桁で10進数。123だったら"00123"のようにゼロを入れて5桁にする。 |
%x | ただの16進数。 アルファベット部分はabcdefを使う。 |
%X | ただの16進数。アルファベット部分はABCDEFを使う。 |
%5x | 5桁で16進数。456だったら" 1c8"のようにスペースを入れて5桁にする。 |
%05x | 5桁で16進数。456だったら"001c8"のように ゼロを入れて5桁にする。 |
GDT/IDT初期化
用語 | 説明 |
---|---|
GDT | global (segment) descriptor tableの略。メモリのどこかにセグメントの設定を並べて、その先頭の番地と有効設定個数をCPUのGDTRという特別なレジスタに設定する。 |
IDT | Interrupt descriptor tableの略。割込み願望0-255に対して発生時に呼び出す関数を設定している表。 |
5日目の感想
プログラムを打ち込んでいるだけで、理解はできていない。
30日ではとても終われそうにない。