Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Выбор режима работы - функция 00hСодержание книги
Похожие статьи вашей тематики
Поиск на нашем сайте
(слайд №8)
Функция 00h прерывания 10h позволяет задать любой стандартный режим работы видеоадаптера:
Приведем пример выбора режима видеоадаптера: mov ah, 0 mov al, 3; Выбираем режим номер 3 (16 цветной, текстовый, int 10h; разрешение 25х80 символов)
Информацию о видеоадаптерах и его режимах можно найти, например: 1. «Библиотека системного программиста» - Александр Фролов, Григорий Фролов Том 21, Программирование видеоадаптеров, М.: Диалог-МИФИ, 1995, 271 стр. 2. http://www.codenet.ru/cat/Applications/Graphics/VGA-VESA-Standarts/ 3. http://www.codenet.ru/progr/video/vbe-svga.php 4. и т.д.
Определение текущего режима работы видеоадаптера - функция 0Fh (слайд №9)
Функция позволяет определить номер текущего режима работы видеоадаптера, номер активной страницы и количество символов в строке экрана. Формат функции имеет следующий вид:
Бит D7 регистра AL соответствует значению бита D7 регистра AL, использованному при предыдущем выборе режима работы видеоадаптера (см. функцию 0). Список стандартных режимов работы видеоадаптеров представлен в следующей таблице:
Приведем список режимов работы видеоадаптеров, соответствующих стандарту VESA: (слайд №10)
Int 11h - Конфигурация оборудования Для варианта №11, Лабораторной работы №2 - Определить и вывести на экран список оборудования (BIOS 11h). (слайд №11-12)
Вход: нет Выход: AX =конфигурация оборудования Описание: Возвращает в AX конфигурацию оборудования ПЭВМ. Примечания: 1. Это слово хранится в области данных BIOS по адресу 00410h. 2. На IBM PC, XT и PCjr биты 2-3 содержат объем ОЗУ на системной плате в блоках по 16К (например, 00=16К, 11=64К). 3. Бит 2 не используется на PC, XT, AT и PC Convertible. На XT-286 и PS/2 он указывает на наличие устройства графического ввода (pointing device). 4. Бит 12 всегда установлен в 1 на PCjr. 5. Бит 13 указывает наличие встроенного модема на PC Convertible, последовательного принтера на PCjr и зарезервирован на остальных ПЭВМ. 6. Если DIP-переключатели в PC и XT выставлены неверно, то BIOS не определит наличие сопроцессора. Для проверки того, имеет ли ЭВМ сопроцессор, лучше всего выполнить его команду и проанализировать результат. 7. Для определения числа жестких дисков используйте Int 13h, функцию 08h.
Приведем назначение отдельных битов слова конфигурации:
Пример: (слайд №13-14)
// ===================================================== // Получение информации о конфигурации компьютера при помощи BIOS // ===================================================== #include <stdio.h> #include <conio.h> #include <memory.h> #include <dos.h> // Битовые поля слова конфигурации typedef struct _HDWCFG { unsigned HddPresent: 1; // 0 unsigned NpuPresent: 1; // 1 unsigned AmountOfRAM: 2; // 2-3 unsigned VideoMode: 2; // 4-5 unsigned NumberOfFdd: 2; // 6-7 unsigned DmaPresent: 1; // 8 unsigned NumberOfCom: 3; // 9-11 unsigned GamePresent: 1; // 12 unsigned JrComPresent: 1; // 13 unsigned NumberOfLpt: 2; // 14-15 } HDWCFG; int main(void) { union REGS rg; HDWCFG HdwCfg; unsigned uword; // Вызываем прерывание INT 11h для получения слова конфигурации компьютера rg.h.ah = 0x0; int86(0x11, &rg, &rg); // Получаем слово конфигурации и сохраняем его в структуре HdwCfg uword = (unsigned int)rg.x.ax; memcpy(&HdwCfg, &uword, 2); // Выводим на экран конфигурацию компьютера printf("\n\nConfiguration word: %04.4X", HdwCfg); if(HdwCfg.HddPresent) printf("\nHDD present"); if(HdwCfg.NpuPresent) printf("\nNPU present"); printf("\nRAM banks: %d", HdwCfg.AmountOfRAM); printf("\nVideo Mode: %d", HdwCfg.VideoMode); printf("\nNubber of FDD: %d", HdwCfg.NumberOfFdd + 1); if(HdwCfg.DmaPresent) printf("\nDMA present"); printf("\nNubber of COM ports: %d", HdwCfg.NumberOfCom); if(HdwCfg.GamePresent) printf("\nGame adapter present"); if(HdwCfg.JrComPresent) printf("\nPCjr Com present"); printf("\nNumber of LPT ports: %d", HdwCfg.NumberOfLpt); // Вызываем прерывание INT 12h для определения объема основной оперативной памяти // компьютера rg.h.ah = 0x0; int86(0x12, &rg, &rg); // Выводим объем оперативной памяти printf("\nRAM istalled: %d Kbytes", (unsigned int)rg.x.ax); // Получаем объем расширенной оперативной памяти, // доступной через прерывание INT 15h rg.h.ah = 0x88; int86(0x15, &rg, &rg); // Выводим объем расширенной оперативной памяти printf("\nExtended RAM istalled: %ld Kbytes", (unsigned int)rg.x.ax); getch(); return 0; } Int 12h - Размер ОЗУ Для варианта №2, Лабораторной работы №2 - Определить объем установленной оперативной памяти и ее тип. (слайд №15)
Существуют 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 — Получить объем памяти
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-04-26; просмотров: 557; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.137.170.241 (0.011 с.) |