0

私はOS Devingのスターターであり、ブートローダーとカーネルを作成することに成功しました.保護モードに正常にジャンプし、制御をカーネルに転送しました.単一の文字を書き込むことはできますが、文字列を印刷することはできません.これは私のprintString()です関数。

void printString(char * message[]){
 int i;
 for(i = 0; message[i] != '\0'; i++)
 {
     print(message[i]);
 }
}

そしてマイプリントキャラクター機能はこちら

void print(char *character){
unsigned char *vidmem = (unsigned char *) VIDEO_ADDRESS;
int offset;   //Variable which hold the offset where we want to print our character
offset =  GetCursor(); //Setting our offset to current cursor position

  vidmem[offset+1] = character;
  vidmem[offset+2] = 0x0f;

SetCursor(offset+2);    
}

これは関数呼び出しです

printString("manoj");

助けてください私はOS開発のスターターです

4

2 に答える 2

1

X 座標と Y 座標を (静的) グローバルとして追跡し、それらをメモリへのオフセットに使用することをお勧めします。offset+1また、 andoffset+2ではなくoffset、 andであるべきoffset+1です。これは、タングルが彼の答えで言ったことに加えてです。

画面に印刷する方法を学習するための優れたチュートリアルは、http://www.jamesmolloy.co.uk/tutorial_html/3.-The%20Screen.htmlにあります。彼は印刷方法について非常に詳細に説明しています。また、OSDev フォーラム ( http://forum.osdev.org/index.php ) とともに、OSDev について学び始めるのにも適しています。

于 2014-02-28T04:55:46.553 に答える