Building 16 bit os - character array not working

Posted by brainbarshan on Stack Overflow See other posts from Stack Overflow or by brainbarshan
Published on 2010-04-27T14:48:30Z Indexed on 2010/04/27 17:13 UTC
Read the original article Hit count: 216

Filed under:
|
|
|
|

Hi. I am building a 16 bit operating system. But character array does not seem to work.

Here is my example kernel code:

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)
     ) ;
}

It prints:

A

that means putchar function is working properly but

 if(str[0]== 'h')
        putchar('h');

is not working.

I am compiling it by:

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

What should I do?

© Stack Overflow or respective owner

Related posts about operating-system

Related posts about gcc