Я знаю, что этот вопрос задан раньше, но ни один из других ответов, похоже, не решил мою проблему. Может, я что-то пропустил?Загрузочный загрузчик не работает на самом компьютере
Я знаю, что .iso работает, потому что я запускал его в QEMU, и он работал успешно. Так что я делаю неправильно?
bits 16
xor ax, ax
start:
cld ; Set direction flag to forward
; Set up registers
mov ax, 07c0h ; Segment location which BIOS loads
add ax, 288 ; (4096 + 512)/16 bytes
mov ss, ax ; Sets stack segment register
mov sp, 4096 ; Sets stack pointer register (offset of stack)
mov ax, 07c0h
mov ds, ax ; Sets data segment to where we're loaded
mov si, text ; Puts string into source index
call print_string ; Calls print string
jmp $ ; Infinite loop to prevent shutdown
print_string:
mov ah, 0eh ; System call for printing
xor bh, bh ; Sets BH register to 0
.repeat:
lodsb ; Loads byte into AL
cmp al, 0 ; Sees if AL is 0
je .done ; Jumps to done if AL is zero
int 10h ; Otherwise, print
jmp .repeat ; Repeat
.done:
ret
text db 'Test', 0
times 510 - ($ - $$) db 0 ; Pads 510 - (current location - start location) zeros
dw 0xAA55 ; Standard PC boot signature (takes up 2 bytes)
Edit: Я добавил следующее в мой код:
xor ax, ax
cld
xor bh, bh
Для создания изо, я бегу следующие команды:
dd if=/dev/zero of=floppy.img bs=1024 count=1440
dd if=bootloader.bin of=floppy.img seek=0 count=1 conv=notrunc
mkdir iso
cp floppy.img iso/
mkisofs -o file.iso -b floppy.img iso
Для сжигания изо на мой usb, я запускаю следующие команды:
umount /dev/sdX
dd if=/home/mint/Downloads/file.iso of=/dev/sdX bs=4M && sync
Что именно вы делаете для загрузки своего «.iso» на реальном компьютере? –
Возможно, вы захотите установить флаг направления вперед с помощью _CLD_, поскольку вы полагаетесь на прямое направление с помощью _LODSB_. Вы не можете гарантировать, какое направление задано BIOS до достижения вашего коэффициента. –
Для [Int 10h/ah = 0eh] (http://www.ctyme.com/intr/rb-0106.htm) вы можете установить регистр BH равным 0, поскольку это используется как номер страницы для записи в , –