Есть С-код который должен выводить строку на екран
Код:
void write_string( int colour, const char *string )
{
volatile char *video = (volatile char*)0xB8000;
while( *string != 0 )
{
*video++ = *string++;
*video++ = colour;
}
}
c_main()
{
while(1) write_string( 0, "string" );
}
и есть асм-код который должен передать управление с-коду
Код:
format ELF
public _start
extrn _c_main
section ".text" executable
_start:
call _c_main
;cli
;hlt
jmp 0xFFFF:0
собираю ядро таким макаром
Код:
fasm fkernel.asm fkernel.o
gcc -c -m32 -ffreestanding -o main.o main.c
local\i686-elf\bin\ld --oformat=binary -melf_i386 -T script.ld -o kernel.bin fkernel.o main.o
@pause
и вот кусок бутсектора который грузит ядро в память и прыгает на него
Код:
Kernel:
mov ax,0000h
mov es,ax
mov bx,500h
mov ch,0 ;номер цилиндра - 0
mov cl,02h ;начальный сектор - 2
mov dh,0 ;номер головки - 0
mov dl,80h ;жесткий диск - 80h
mov al,04h ;кол-во читаемых секторов 4
mov ah,02h
int 13h
jmp 0000:0500h
Не пойму в чём ошибка, но такое чувство что не туда загружает ядро