4
我正在構建一個16位操作系統。但字符數組似乎不起作用。建設16位操作系統 - 字符數組不工作
這是我的例子內核代碼:
asm(".code16gcc\n");
void putchar(char);
int main()
{
char *str = "hello";
putchar('A');
if(str[0]== 'h')
putchar('h');
return 0;
}
void putchar(char val)
{
asm("movb %0, %%al\n"
"movb $0x0E, %%ah\n"
"int $0x10\n"
:
:"m"(val)
) ;
}
它打印:
A
這意味着putchar函數工作正常,但
if(str[0]== 'h')
putchar('h');
不工作。
gcc -fno-toplevel-reorder -nostdinc -fno-builtin -I./include -c -o ./bin/kernel.o ./source/kernel.c
ld -Ttext=0x9000 -o ./bin/kernel.bin ./bin/kernel.o -e 0x0
我應該怎麼做:
我通過編譯呢?
特別是它如何失敗?你看到什麼輸出或錯誤? – 2010-04-27 14:52:22
它給出輸出字符'A'。那是putchar('A')正在工作。但是putchar('h')不起作用,這意味着if語句中的條件失敗。但我初始化了str =「hello」;那麼什麼是錯的? – brainbarshan 2010-04-27 15:37:06
你可以嘗試打印什麼,做一個'putchar(str [0])'看看你找到了什麼。我沒有仔細觀察,但你想確保初始化你認爲你確實工作正確。然後我們可以根據我們所看到的來診斷問題。 – Ukko 2010-04-27 17:14:53