Загрузка файла .img на дискету в виртуальном ящике

#virtual-machine #virtualbox #nasm #osdev #floppy

#виртуальная машина #virtualbox #nasm #экранное меню #дискета

Вопрос:

У меня есть программа Hello World в Assembly language

 `; ----------------------------------------------------------------------------
  ; helloworld.asm 
  ;
  ; This is a Win32 console program that writes "Hello, World" on one line and
  ; then exits.  It needs to be linked with a C library.   
  ; ------------------------------------------------------------- ---------------

 global  _main
 extern  _printf

 section .text
_main:
 push    message
 call    _printf
 add     esp, 4
 ret
 message:
  db  'Hello, World', 10, 0`
  

Я выполнил это с помощью nasm и получил img файл.
Когда я использую Floppy Controller , он выдает ошибку..

 Failed to open Floppy Disk File D:helloworld.img
 the Medium D:helloworld.img Cannot be used as a requested device type

Result Code: E_FAIL (0x80004005)
Component: Medium
Interface: IMedium {05f2bbb6-a3a6-4fb9-9b49-6d0dda7142ac}
Callee: IVirtualBox {fafa4e17-1ee2-4905-a10e-fe7c18bf5554}
Callee RC: VBOX_E_OBJECT_NOT_FOUND (0x80BB0001)
  

Комментарии:

1. Скорее всего, это потому, что ваш img файл не дополнен границей сектора, то есть 512 байтами. Для nasm вы можете просто добавить эту строку в конце: times 512-($-$$) db 0

2. Хотя, насколько я могу судить, то, что вы пытаетесь сделать, не подходит для данной программы. Поскольку это программа Win32, вы не можете просто поместить ее прямо на дискету и ожидать, что она загрузится в Virtual Box.

Ответ №1:

Я думаю, вам нужно создать файл .img с помощью partcopy или etc. Я имею в виду, что вы сделали для создания файла изображения, но он должен быть правильным.В качестве примера вы можете создать его с помощью copy / b, но это не делает его правильным.Или вы можете создать файл ISO, чтобы сделать его пригодным для использования.

 miso your.iso -ab your.img