V
V
vitalik042018-04-30 21:06:48
assembler
vitalik04, 2018-04-30 21:06:48

Why is the OS bootloader not working?

I found the bootloader code on the Internet:

org 7C00h            ; адреса нашей программы расчитываются с учетом данной директивы
use16                    ; генерируется шестнадцатиричный код

cli                         ;запрещаем  прерывания для смены адресов в сегментных регистрах
mov ax, 0              
mov es, ax
mov ds, ax
mov ss, ax
mov sp, 7C00h
sti                         ;разрешаем прерывания (после изменения адресов)

mov ax, 0003h     ;установка видео режима для вывода строки на экран
int 10h

mov ax, 1301h     ;собственно вывод строки  функция 13h int 10h (позже будет подробнее)
mov bp, stroka     ;адрес выводимой строки
mov dx, 0000h     ;строка и колонка в которой  выводится текст
mov cx, 15           ;количество символов выводимой строки 
mov bx, 000eh     ;00-номер видео страницы (лучше не трогать) 0e-атрибуты символа(цвет,фон)
int 10h

jmp $                    ;топтаться на месте (зацикливает программу на этой точке)

stroka db 'Ok, MBR loaded!'
times 510 - ($ - $$) db 0        ;заполнение нулями промежутка между предыдущим байтом и пос-
db 0x55,0xAA                       ;последними двумя байтами

Compiled to binary and created an iso image. When I run it in VirtualBox, it displays:
FATAL: Could not read from the boot medium! System halted
How to solve the problem?

Answer the question

In order to leave comments, you need to log in

1 answer(s)
T
Type Programmer, 2018-04-30
@vitalik04

Well, the code is correct, since everything works for me, depending on how you write, you need to go to the first sector of the disk. Also, see if the virtual machine is booting from the same image.
I personally decided that I would not make a bootloader, and I use the "Install as a boot file" feature in UltraICO, so you can immediately write the kernel, and not be afraid of running out of memory.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question