ОС не может перейти из загрузчика в ядро

Мои действия:
Компилирую каждый файл в .bin
С помощью UltraISO создаю образ "системы" в формате .iso, загружаю в него файл main.bin и делаю загрузочным файлом
Запускаю "ОС" через VirtualBox и кроме "OS loaded..." ничего не выводится
Как можно решить проблему?

Boot.asm

org 7c00h
jmp Start

StrLen:
    push bp
    mov ax, 0
    StrLenWhile:
        cmp byte [bp], 0
        jz StrLenReturn
        inc bp
        inc ax
        jmp StrLenWhile

    StrLenReturn:
        pop bp
    ret

Print:
    push cx bx ax
    call StrLen
    mov cx, ax
    mov bl, 03h
    mov ax, 1301h
    int 10h
    pop ax bx cx
    ret


Int13Error:
    mov dx, 0100h
    mov bp, ErrorMessage
    call Print

    push ax
    call StrLen
    mov dl, al
    inc dl
    pop ax

    mov bp, ErrorCode
    add [bp], ax
    mov cx, 1
    call Print
    jmp EndOS



Start:
    cli
    mov ax, cs
    mov ss, ax
    mov sp, 7c00h
    sti

    mov es, ax
    mov ds, ax

    mov ax, 0002h
    int 10h

    mov ah, 02h
    xor bh, bh
    mov dh, 0
    mov dl, 0
    int 10h

    mov bp, Message
    mov cx, 5
    call Print

    mov ax, 0000h
    mov es, ax
    mov bx, 0500h
    mov ch, 0h
    mov cl, 2h
    mov dl, 00h
    mov dh, 0h
    mov al, 01h
    mov ah, 02h
    int 13h

    mov ah, 01h
    int 13h

    jmp Int13Error


Message db "OS loaded...", 0
ErrorMessage db "Error code:", 0
ErrorCode db '0', 0

EndOS:

jmp $

times(510 - ($ - $$)) db 0
db 0x55, 0xAA

Kernel.asm

org 0500h

mov ax, 1301h
mov bp, Message2
mov cx, 2
mov bl, 02h
int 10h

Message2 db "jo", 0

jmp $

times 510 - ($ - $$) db 0
db 0x55, 0xAA

main.asm

    macro align value { db value-1 - ($ + value-1) mod (value) dup 0 }
    HEADS = 1
    SPT = 4
    Begin:
            file "Boot.bin", 512
            file "Kernel.bin"
            align 512
            align HEADS*SPT*512

Ответы (0 шт):