Определение текущего режима работы видеоадаптера - функция 0Fh
Определение текущего режима работы видеоадаптера - функция 0Fh Функция позволяет определить номер текущего режима работы видеоадаптера, номер активной страницы и количество символов в строке экрана. Формат функции имеет следующий вид:
Бит D7 регистра AL соответствует значению бита D7 регистра AL, использованному при предыдущем выборе режима работы видеоадаптера (см. функцию 0 ). Список стандартных режимов работы видеоадаптеров представлен в следующей таблице:
Приведем список режимов работы видеоадаптеров, соответствующих стандарту VESA:
Int 11h - Конфигурация оборудования Для варианта №11, Лабораторной работы №2 - Определить и вывести на экран список оборудования (BIOS 11h).
Вход: нет Выход: 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.
Приведем назначение отдельных битов слова конфигурации:
Пример:
// ===================================================== // Получение информации о конфигурации компьютера при помощи 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; }
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|