Автор: lonesome [TSH/Digital Daemons]
Дата: 26.05.2003
Раздел: Разработка ОС
Сегодня в номере:
В прошлом, четвертом выпуске, рассказывая о функции 0x02 прерывания int 0x13 BIOS, я сказал:
"Эта функция нам понадобится только для чтения с дискеты, поэтому можно считать, что номер цилиндра находится в CL, а номер сектора - в CH"
Читать эту фразу следует наоборот - номер цилиндра в CH, а номер сектора - в CL. То есть касательно дискет, таблица параметров для этой функции выглядит вот так:
DL - номер диска (носителя)DH - номер головкиCH - номер цилиндра (дорожки)CL - номер сектораAL - количество секторов (в сумме не более одного цилиндра)ES:BX - адрес буфера в памяти, в который будут считаны данныеВ предыдущем выпуске я не упомянул два важных момента:
Отсчет головок, цилиндров ведется с нуля, а секторов с единицы. То есть загрузочный (первый) сектор дискеты - это:
0 (головка) : 0 (цилиндр) : 1 (сектор)
И в дальнейшем, говоря о конкретных секторах на диске я буду использовать представление адреса сектора в виде 3 чисел - X:X:X.
У некоторых подписчиков возник вопрос, можно ли использовать при разработке ОС такие языки, как Pascal или C++.
Основная проблема ЯВУ при разработке ОС заключается в том, что с их помощью нельзя контролировать на низком уровне поведение процессора и внешних устройств, поэтому ассемблер нам понадобится в любом случае. Другое дело, что языки высокого уровня обычно имеют возможность вставки ассемблерного кода в исходник, поэтому использование чистого ассемблера можно свести к минимуму (только для загрузчика). Более того, некоторые ОС изолируют весь низкоуровневый код в т.н. HAL (hardware abstraction layer), а вся остальная часть системы написана только на ЯВУ и, следовательно, портабельна на другие архитектуры
В связи с этим предлагаю разрабатывать основную часть системы на языке Си, а всю аппаратно-зависимую часть - на ассемблере. Если вы несогласны - пишите
На сегодня все, уважаемые подписчики
Как всегда, мой почтовый ящик открыт для вас: lonesome@lowlevel.ru
Также вы можете задавать интересующие вас вопросы в форуме lowlevel.ru
Всего наилучшего!
Lonesome