ОС не может перейти из загрузчика в ядро
Мои действия:
Компилирую каждый файл в .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