Как создать файл на жестком диске в сборочном загрузчике, используя только прерывания B IOS? - PullRequest
0 голосов
/ 04 мая 2020

Я написал базовый c сборочный загрузчик для очистки экрана и печати X:

[BITS 16]
[ORG 0x7c00]

main:
   mov ax, 0x03
   int 10h

   mov ah, 0x0E
   mov al, 'X'
   int 10h

   jmp $

times 510 - ($-$$) db 0
DW 0xAA55

Теперь мне нужно создать файл на жестком диске. Я знаю, что могу легко сделать это с прерываниями DOS, используя этот код:

outputfile db "myfile.txt"
outhandle  db ?

mov dx, offset outputfile
mov cx, 0
mov ah, 3Ch
int 21h
mov outhandle, ax

Но я ничего не нашел в операциях с файлами с использованием прерываний B IOS.

Это возможно?

1 Ответ

4 голосов
/ 04 мая 2020

Идея, лежащая в основе вызовов прерывания B IOS, состоит в том, чтобы абстрагировать множество подробностей от определенных c периферийных устройств. Таким образом, вместо того, чтобы знать, как крутить мотор, двигать головой и т. Д. c, существуют высокоуровневые вызовы b ios, в отличие от вызовов для драйверов или системных вызовов в операционной системе, у вас есть эти вызовы, чтобы прочитать это напишите это.

Файловые системы и другие подобные вещи находятся на следующем более высоком уровне / уровне. Вызовы B IOS в отношении жестких дисков помогают вам читать сектор, писать секторальные вещи, но файловые системы высокого уровня, и вы должны реализовать это в своем коде. (или делать системные вызовы операционной системы).

Если вы хотите просто поэкспериментировать с чтением и записью, вы можете просто сделать это без файловой системы, потому что на этом уровне это просто биты / байты / сектора, а не файл системы. Вы можете просто написать секторы от N до M, затем прочитать их назад или прочитать их в случайном порядке и т. Д. c, чтобы почувствовать, что они есть. Или вы можете использовать операционную систему для создания файловой системы и создания файлов, а затем использовать вызовы B IOS для чтения инфраструктуры файловой системы (зависит от файловой системы) и попытаться найти файлы и следовать информации каталога для сбора отдельных частей этот файл по секторам. И используйте эту информацию в сочетании с любой информацией о качестве, которую вы можете найти в Интернете для этого определенного c типа файловой системы, и сравните примечания и, возможно, разработайте собственную библиотеку файловой системы оттуда.

Если это ваш В таком случае вы можете вообще не иметь файловой системы, просто следите за данными на этом носителе, как бы вы ни были sh.

Обратите внимание, что существуют бесплатные реализации DOS, в которых вы можете позаимствовать их код для те звонки, или учиться или что-то еще. Точно так же могут существовать сторонние реализации, некоторые из которых могут быть с открытым исходным кодом.

И, как указано в комментарии, в зависимости от ваших общих целей, существуют более новые решения, которые заменяют прямой BIOS / DOS для загрузки P C. Ожидается, что аналогичная модель / функциональность будет более новой и более гармоничной с современными процессорами, а не чем-то разработанным на 8088/86.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...