I wrote a bootloader and a kernel and want my bootloader to load my kernel
[org 0x7c00]
    jmp     start
    ;%include "console.inc"
start:
    xor     ax, ax
    mov     ds, ax
    ;call    init_console
    ;call    clrscr
    ;mov     si, head
    ;mov     ah, 0x0f
    ;call    str_out
    ;mov     si, prompt
    ;mov     ah, 0x0f
    ;call    str_out
wait_in:
    in      al, 0x60
    cmp     al, 0
    jg      end_wait_in
    jmp     wait_in
end_wait_in:
    mov     ax, 0
    int     0x13
    jc      end_wait_in
read:
    mov     ax, 0x8000
    mov     es, ax
    mov     bx, 0
    mov     ah, 2
    mov     al, 1
    mov     ch, 0
    mov     cl, 2
    mov     dh, 0
    int     0x13
    jc      read
    jmp     0x8000:0x0000
head:        db          'XordaOS Bootloader v0.0.1', 0xa, 0xa, 0x0
prompt:      db          'Press any key to boot', 0x0
times 510 - ($ - $$) db 0
db 0x55
db 0xaa
This was my bootloader and now my kernel
    jmp     start
    %include "console.inc"
start:
    xor     ax, ax
    mov     ds, ax
    call    init_console
    call    clrscr
    mov     si, msg
    mov     ah, 0x0f
    call    str_out
    cli
    jmp     $
msg:        db          'Hello World', 0x0
This is console.inc (commented in loader.asm with all console code)
init_console:
    mov     ax, 0xb800
    mov     es, ax
    xor     bx, bx
    xor     dx, dx
    ret
str_out:
    lodsb
    cmp     al, 0x0
    je      str_out_end
    cmp     al, 0xa
    je      new_line
    mov     [es:bx], ax
    add     bx, 2
    jmp     str_out
new_line:
    add     dx, 160
    mov     cx, dx
    sub     dx, bx
    add     bx, dx
    mov     dx, cx
    jmp     str_out
str_out_end:
    ret
clrscr:
    mov     cx, 2000
    xor     bx, bx
    mov     al, ' '
    mov     ah, 0x00        
start_clr:
    mov     [es:bx], ax
    add     bx, 2
    loop    start_clr
    xor     bx, bx
    ret
then I entered following commands:
#!/bin/bash
nasm -fbin -o loader.bin loader.asm
nasm -fbin -o kernel.bin kernel.asm
dd if=/dev/zero of=XordaOS.img bs=1024 count=1440
dd if=loader.bin of=XordaOS.img bs=512 seek=0 conv=notrunc
dd if=kernel.bin of=XordaOS.img bs=512 seek=1 conv=notrunc
And then I started it in QEMU Launcher (GUI)
Everything is working until the code area where I load the kernel. After end_wait_in I called my clear screen function clrscr and the screen is cleared but after that my kernel doesn't do anything
I think something is wrong. Can anyone help me?
 
    