Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Int 12h - Размер ОЗУ. Для варианта №2, Лабораторной работы №2 - Определить объем установленной оперативной памяти и ее тип.




Int 12h - Размер ОЗУ

Для варианта №2, Лабораторной работы №2 - Определить объем установленной оперативной памяти и ее тип.

 

Существуют 3-и типа оперативной памяти:

  • основная;
  • расширенная;
  • дополнительная.

 

Объем основной памяти определяется прерыванием BIOS INT12h.

Вход:          нет

Выход:      AX =размер ОЗУ в килобайтах

Описание: Возвращает в AX размер оперативной памяти в Кб (не более 640), определенный в процессе POST анализом DIP-переключателей на PC/XT или содержимого CMOS на AT и PS/2.


Примечания.

1. Это слово хранится в области данных BIOS по адресу 00413h.

2. Для определения размера расширенной памяти используйте Int 15h, функцию 88h. Для определения размера дополнительной памяти используйте Int 67h, функцию 42h.

Анализируя эту величину из AX, программы могут при нехватке памяти либо вывести на экран соответствующее сообщение и отказаться от работы, либо изменить алгоритмы работы, организовав, например, " виртуальную" память на диске или просто записывая в файл промежуточные результаты.

Int 15h - Системные утилиты

Это прерывание объединяет большую группу функций, не связанных с каким-либо конкретным внешним устройством, например:

88h Получить размер расширенной памяти (AT, XT-286, PS/2)

 

Выход: AX = число непрерывных 1K блоков сверх 1M (1024K)

 

Интерфейс EMS

 

Дополнительная память (EMS) — способ для программ, запускающихся в реальном режиме, обращаться к памяти, находящейся за пределами первого мегабайта. EMS позволяет отобразить сегмент памяти, начинающийся обычно с 0D000h, на любые участки памяти.

Вызывать функции EMS ( прерывание 67h) можно, только если в системе присутствует драйвер с именем ЕММХХХХ0.

Для проверки его существования можно, например, вызвать функцию 3Dh (открыть файл или устройство), причем на тот случай, если драйвер EMS отсутствует, а в текущей директории есть файл с именем ЕММХХХХ0, следует дополнительно вызвать функцию IOCTL INT 21h с АХ = 4400h и ВХ = идентификатор файла или устройства, полученный от функции 3Dh. Если значение бита 7 в DX после вызова этой функции 1, то драйвер EMS наверняка присутствует в системе.

INT 67h, АН = 42h — Получить объем памяти

Ввод: AH = 42h
Вывод: АН = 0 DX = объем EMS-памяти в 16-килобайтных страницах ВХ = объем свободной EMS-памяти в 16-килобайтных страницах

Int 13h - Управление дисками

Для вариантов №1 и №8, Лабораторной работы №2 – «Определить наличие и тип установленного в системе накопителя на жестких магнитных дисках (НЖМД)» и «Определить количество и тип установленных накопителей на гибких магнитных дисках (НГМД)» соответственно.

 

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

 

Int 13h используется для работы с дисковыми устройствами ПЭВМ. Многочисленные функции прерывания INT 13h выполняют все операции по вводу/выводу на диски.


Отметим, что:

1. код функции всегда заносится в регистр AH;

2. для функций, требующих в качестве параметра номер устройства, нумерация дисководов для гибких дисков начинается с 0, нумерация жестких дисков начинается с 80h;

3. номер цилиндра жесткого диска кодируется в 10-битном виде (в регистре - младшая часть, в регистре CL - 2 старших бита номера цилиндра в битах 6 и 7 );

4. результаты выполнения последней команды контроллера после вызова любой функции данного прерывания, обращающейся к диску, вы можете найти в буфере по адресу 0: 442h. Длина буфера - 7 байт;

5. коды возврата последней выполнявшейся функции с жесткими дисками, возвращаемые обычно в регистре AH, записываются так же в байты по адресу 0: 474 и могут быть после этого возвращены вызовом функции 01h.

6. стандартный BIOS XT выполняет только функции с 0 по 5 и предназначен для работы с накопителями на гибких дисках; для обслуживания запросов к жестким дискам на плате контроллера жестких дисков имеется расширенный BIOS ( BIOS XT ), который при выполнении процедуры инициализации, вызываемой в процессе сканирования ПЗУ, переписывает адрес стандартного обработчика INT 13h по адресу 0: 100h и вызывает его при необходимости выполнения запроса к НГМД командой INT 40h;

7. расширенный BIOS XT выполняет функции с 0 по 14h;

8. при выполнении функций, требующих обмена с диском, следует разместить буфер для обмена в памяти таким образом, чтобы он не пересекал границу 64-Кбайтной страницы ПДП, иначе попытка обмена будет безуспешной;

9. для AT, XT-286, PC Convertible и PS/2 перед выполнением любой операции с диском BIOS выполняет вызов INT 15h, функция 90h (" устройство занято" ) с типом устройства 00h для жестких дисков. После завершения операции с диском BIOS выполняет вызов INT 15h, функция 91h - " обработка прерывания завершена".

10. для определения конкретных параметров накопителей BIOS берет информацию о них из таблиц параметров; на таблицу параметров первого жесткого диска вектор 41h, на таблицу параметров второго жесткого диска вектор 46h; конкретное содержание таблиц параметров жестких дисков зависит от типа диска.

 

Функции прерывания INT 13h:

 

00h Сброс дисковой подсистемы Эта функция выполняет установку в исходное состояние всей дисковой системы или выбранного дискового устройства. Используется обычно перед началом работы с устройством.
01h Получить состояние дисковой подсистемы Эта функция позволяет проверить результат выполнения предыдущей операции. Если операция завершилась аварийно, при помощи этой функции можно определить код ошибки.

 

02h Чтение сектора

Выполняется чтение секторов в оперативную память компьютера или запись информации из памяти в сектора диска.

Сектор задается для выбранных устройства, дорожки и головки. Программа должна также задать количество читаемых/записываемых секторов.

03h Запись сектора
04h Проверка сектора Функция проверяет сектора на правильность циклической контрольной суммы, CRC (Cyclic Redundancy Check); записи содержимого секторов в память не происходит.
05h Форматирование дорожки Функция форматирования предназначена для начального формирования структуры дорожки диска, она разрушает все имеющиеся на дорожке данные. С помощью функции 05 вы можете за один раз отформатировать только одну дорожку с указанным номером. Для этой функции необходимо задать два параметра - фактор чередования и буфер формата.
06h Форматирование дорожки (НМД) Функция форматирования дорожки с кодом 6 предназначена только для НМД и устанавливает флаг плохого сектора. Буфер формата подготавливается аналогично функции 5.
07h Форматирование диска (НМД) Функция форматирования с кодом 7 предназначена для форматирования целого диска начиная с определенной дорожки. Буфер формата подготавливается аналогично функции 5.
08h Получить текущие параметры дисковода (НМД) С помощью этой функции программа может определить тип дисковода, количество дисководов, обслуживаемых первым дисковым контроллером и другие параметры дисковода, которые нужны программе для организации доступа к диску на физическом уровне. Тип дисковода, возвращаемый в регистре BL, может принимать следующие значения:
09h Инициализация таблиц параметров жесткого диска Функцию инициализации контроллера НМД применяют после модификации таблиц параметров жесткого диска. BIOS BIOS узнает о внесенных в таблицы изменениях и инициализирует соответствующим образом контроллер НМД.
0Ah Чтение длинное (НМД) Функция " Чтение секторов длинное" отличается от обычной функции чтения (код 02h) тем, что она дополнительно считывает в буфер данных 4 байта кода коррекции ошибки (ECC).
0Bh Запись длинная (НМД) Функция " Запись секторов длинная" отличается от обычной функции записи (код 03h) тем, что она дополнительно записывает на диск из буфера данных 4 байта кода коррекции ошибки (ECC).
0Ch Поиск цилиндра (НМД) С помощью функции 0Ch программа может подвести головки к дорожке с заданным номером. Функции чтения/записи секторов не требуют предварительного поиска дорожки, они выполняют поиск сами.
0Dh Альтернативный сброс дисковода (НМД) Вы можете использовать эту функцию для сброса контроллера вместо функции с кодом 00h. В отличие от функции сброса дисковой подсистемы с кодом 00h эта функция не влияет на контроллер НГМД, она сбрасывает только контроллер накопителя на жестком магнитном диске.
0Eh Чтение буфера сектора (НМД) Контроллеры НМД в компьютерах PC и XT содержат внутренний буфер данных. С помощью функции 0Eh программа может прочитать содержимое этого буфера в оперативную память. Чтения данных с диска при этом не происходит. В основном функция чтения буфера используется для диагностики дискового контроллера.
0Fh Запись буфера сектора (НМД) Функция полностью аналогична предыдущей, за исключением того, что происходит не чтение, а запись данных из оперативной памяти в буфер контроллера. Она может быть использована для инициализации содержимого буфера сектора перед форматированием диска функцией 05h прерывания INT 13h.
10h Проверка готовности дисковода (НМД) О готовности дисковода можно судить по байту состояния, передаваемому функцией в регистре AH. Этот байт аналогичен возвращаемому в регистре AH функцией 01h.
11h Рекалибровка дисковода (НМД) Вызов функции приводит к позиционированию головок выбранного дисковода на нулевую дорожку. Дополнительно в регистре AH возвращается байт состояния дисковода.

 

12h Проверка памяти контроллера (НМД) Эта функция предназначена для запуска встроенной диагностики дискового контроллера, она проверяет внутренний буфер сектора и возвращает байт состояния.
13h Проверка дисковода (НМД) Функция используется для запуска внутренней диагностики контроллера.
14h Проверка контроллера (НМД) Функция запускает внутреннюю диагностику контроллера.
15h Получить тип дисковода Возвращаемый этой функцией тип дисковода может принимать значения от 0 до 3. С помощью этой функции программа может определить тип диска и возможность обнаружения замены магнитного носителя (дискеты).
16h Проверка замены диска В некоторых случаях замена дискеты нежелательна до выполнения определенных действий (мы говорили об этом при обсуждении драйверов дисковых устройств). С помощью этой функции программа может убедиться в том, что в дисководе установлена все та же дискета, что и в начале цикла операций. Если дискета была по ошибке заменена раньше времени, программа может потребовать установить старую дискету для завершения работы с ней.
17h Установка типа дискеты Функцию установки типа дискеты необходимо использовать перед началом работы с дискетой. Устанавливаемый тип может принимать значения от 0 до 4. Если перед вызовом этой функции был установлен флаг замены дискеты, то он сбрасывается. Дополнительно BIOS устанавливает скорость передачи данных через контроллер НГМД в зависимости от типа дискеты.
18h Установка среды носителя данных для форматирования Эта функция должна быть вызвана перед использованием функции 05h форматирования диска для установки правильной скорости передачи данных через дисковый контроллер. Дополнительно функция сбрасывает флаг замены дискеты (если этот флаг установлен).
19h Парковка головок (НМД) Парковка головок - это их установка в нерабочую область, т. е. на нерабочую дорожку. Эту операцию обычно выполняют перед транспортировкой компьютера для исключения повреждения дисковода.
1Ah Форматирование диска (ESDI НМД) Эта функция форматирования жесткого диска предназначена для НМД, используемого совместно с контроллером ESDI. Она поддерживает таблицу дефектных дорожек и имеет несколько режимов форматирования в зависимости от содержимого регистра CL при вызове.

 

Рассмотрим некоторые функции более подробно:

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...