Я использую VirtualBox 4.1.14 в Windows 7, и я пытаюсь заставить его запустить мою тестовую ОС. Я использую код сборки ниже, и я его компиляции сЗапуск ОС на VirtualBox
NASM -f бен -o boot.bin boot.asm
Я пытаюсь преобразовать полученный бен файл в ISO, что VB4.1.14 может (я не хочу платить деньги или лимиты от пробной программы). Я попытался загрузить различные конвертеры, такие как bin2iso, но VB придумывает разные ошибки, когда я пытаюсь открыть полученный ISO внутри него, как VERR_NOT_SUPPORTED и другие.
Я бы предпочел, чтобы решение было инструментом командной строки, поэтому я могу использовать его в пакетном скрипте для ускорения тестирования.
BITS 16
start:
mov ax, 07C0h ; Set up 4K stack space after this bootloader
add ax, 288 ; (4096 + 512)/16 bytes per paragraph
mov ss, ax
mov sp, 4096
mov ax, 07C0h ; Set data segment to where we're loaded
mov ds, ax
mov si, text_string ; Put string position into SI
call print_string ; Call our string-printing routine
jmp $ ; Jump here - infinite loop!
text_string db 'This is my cool new OS!', 0
print_string: ; Routine: output string in SI to screen
mov ah, 0Eh ; int 10h 'print char' function
.repeat:
lodsb ; Get character from string
cmp al, 0
je .done ; If char is zero, end of string
int 10h ; Otherwise, print it
jmp .repeat
.done:
ret
times 510-($-$$) db 0 ; Pad remainder of boot sector with 0s
dw 0xAA55 ; The standard PC boot signature
Просто предложение. Но в большинстве примеров, подобных этому, команда «cli» сразу после метки начала отключает маскируемые внешние прерывания. Возможно, вы захотите сделать то же самое. – teddy
Хотя я укажу, что, поскольку вы выполняете бесконечный цикл здесь, не нужно использовать инструкцию «cli». Эта инструкция чаще всего используется в качестве инструмента синхронизации процессора, чтобы избежать условий гонки между драйверами и ядром. Он также обычно используется для остановки системы при использовании в сочетании с инструкцией «hlt». Используя «cli», тогда «hlt» обычно является предпочтительным методом преднамеренной остановки системы по сравнению с бесконечным циклом, как вы использовали. – teddy