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

14h - конфигурация оборудования




14h - конфигурация оборудования

Для варианта №11, Лабораторной работы №2 –Определить и и выести на экран список оборудования (BIOS 11h).

 

В этом байте находится информация о количестве установленных НГМД, о наличии арифметического сопроцессора, а также о типе видеоадаптера, подключенного к системе. Приведем формат байта конфигурации:

 

Бит Описание
1 - в системе установлены НГМД; 0 - НГМД не используются
1 - установлен арифметический сопроцессор; 0 - арифметический сопроцессор не установлен
2-3 не используются, равны 0
4-5 Тип видеоадаптера и видеорежим: 00 - не используется или EGA; 01 - CGA, EGA, VGA в режиме 40x25; 10 - CGA, EGA, VGA в режиме 80x25; 11 – монохромный видеоадаптер
6-7 Количество установленных НГМД, уменьшенное на единицу; 00 – один НГМД; 01 – два НГМД; 10 – три НГМД; 11 – четыре НГМД

Кроме этого, в ячейках CMOS-памяти содержится и информация об оперативно памяти: основной и расширенной ( Для варианта №2, Лабораторной работы №2 - Определить объем установленной оперативной памяти и ее тип. )

 

Номера ячеек Назначение Описание
15h - 16h Объем основной памяти Ячейка 15h содержит младший байт, а ячейка 16h - старший байт объема основной памяти. Например: 0100h - 256K 0200h - 512K 0280h - 640K
17h - 18h Объем расширенной (extended) памяти Ячейки 17h и 18h содержат, соответственно, младший и старший байты размера дополнительной памяти (расположенной выше границы 1 М) в килобайтах.
30h - 31h Объем расширенной (extended) памяти Ячейки 30h и 31h содержат, соответственно, младший и старший байты размера дополнительной памяти (расположенной выше границы 1 М) в килобайтах. Эта информация дублирует аналогичную информацию, расположенную в ячейках с адресами 17h-18h.

 

Пример:

 

// =====================================================

// Чтение и отображение ячеек памяти CMOS

// =====================================================

#include < stdio. h>

#include < conio. h>

#include < stdlib. h>

int main()

{

unsigned char cmos[64];

int i;

unsigned long nExtRam;

// Читаем 64 ячейки CMOS-памяти в массив cmos

for(i=0; i< 64; i++)

{

outp(0x70, i);

cmos[i]=inp(0x71);

}

// Отображаем ячейки часов реального времени

printf(" \nRTC:          " );

for(i=0; i< 0xd; i++)

{

printf(" %02. 2x ", (unsigned)cmos[i]);

}

// Отображаем состояние байта диагностики после включения питания

printf(" \nDiagnostics byte: %02. 2x", cmos[0xe]);

// Отображаем содержимое байта отключения

printf(" \nShutdown byte: %02. 2x\n", cmos[0xf]);

// Отображаем содержимое зарезервированных ячеек

printf(" Reserved:     " );

for(i=0x34; i< 0x40; i++)

{

printf(" %02. 2x ", (unsigned)cmos[i]);

}

// Вычисляем объем расширенной памяти и отображаем его на консоли

nExtRam = ((unsigned long)cmos[0x18] < < 8) + cmos[0x17];

printf(" \nExtended RAM: %ld Kbyte\n", nExtRam);

getch();

return 0;

}

Int 14h - Управление стыком RS-232C

Для варианта №13, Лабораторной работы №2 – Определить статус последовательного порта связи (BIOS 14h).

 

Для управления последовательным интерфейсом (стыком RS-232C) имеются следующие функции:

 

Функция Назначение Примечания
00h Инициализация порта

Поддерживаются BIOS всех ПЭВМ

01h Вывод одного символа в порт
02h Ввод одного символа из порта
03h Опрос состояния порта
04h Расширенная инициализация порта (PS/2)

Поддерживаются только ПЭВМ семейства PS/2

05h Расширенное управление портом (PS/2)

 

Примечания.

Номер стыка в описанных ниже функциях задается так:

0 - COM1,

1 - COM2 и т. д.

При этом в PS/2 он может варьироваться от 0 до 3, в остальных ПЭВМ - от 0 до 1. Базовый адрес порта для стыка извлекается из области данных по адресу 00400h.

 

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

 

INT 14h AH = 03 — Получить текущее состояние порта

 

Ввод: АН = 03h DX = номер порта (00h – 03h)
Вывод: АН = состояние линии AL = состояние модема

 


INT 14h АН = 00 — Инициализация последовательного порта

 

Ввод: АН = 00h AL = параметры инициализации: биты 7 – 5: 000 — 19 200 бод (110 бод без FOSSIL) 001 — 38 400 бод (150 бод без FOSSIL) 010 — 300 бод 011 — 600 бод 100 — 1200 бод 101 — 2400 бод 110 — 4800 бод 111 — 9600 бод биты 4 – 3: четность (01 — четная, 11 — нечетная, 00 или 10 — нет) бит 2: число стоп-бит (0 — один, 1 — два) биты 1 – 0: длина слова (00 — 5, 01 — 6, 10 — 7, 11 — 8) DX = номер порта (00h – 03h)
Вывод: АН = состояние порта бит 7: тайм-аут бит 6: буфер вывода пуст (без FOSSIL: регистр сдвига передатчика пуст) бит 5: в буфере вывода есть место (без FOSSIL: регистр хранения передатчика пуст) бит 4: обнаружено состояние BREAK бит 3: ошибка синхронизации бит 2: ошибка четности бит 1: ошибка переполнения — данные потеряны бит 0: в буфере ввода есть данные AL = состояние модема бит 7: обнаружена несущая (состояние линии DCD) бит 6: обнаружен звонок (состояние линии RI) бит 5: запрос для передачи (состояние линии DSR) бит 4: сброс для передачи (состояние линии CTS) бит 3: линия DCD изменила состояние бит 2: линия RI изменила состояние бит 1: линия DSR изменила состояние бит 0: линия CTS изменила состояние

 

Более того информацию о портах можно извлечь и из области данных BIOS (Data Area BIOS).

 

Как говорилось ранее, после зоны векторов прерываний идет область, называемая BIOS Data Area, где размещаются данные, полученные в ходе тестирования оборудования, буфера системных устройств, например буфер клавиатуры, и различные служебные регистры. Эта область данных имеет размер не менее 256 байтов и начинается с адреса 0000: 0400h или 0040: 0000h. Назначение наиболее интересных для пользователя зон в области BIOS Data Area следующее:

 

Адрес Размер, байт Назначение
040: 000 4x2 Базовые адреса портов СОМ 1— COM4 Для варианта №4, Лабораторной работы №2 – Определить количество установленных параллельных и последовательных портов.
040: 008 3x2 Базовые адреса портов LPT1— LPT3 Для варианта №4, Лабораторной работы №2 – Определить количество установленных параллельных и последовательных портов
040: 010 040: 017 2 39 Установленное оборудование Для варианта №11, Лабораторной работы №2 – Определить и вывести на экран список оборудования (BIOS 11h). Область флагов и буфер клавиатуры
040: 049 Текущий видеорежим Для варианта №12, Лабораторной работы №2 – Определить режим видеоадаптера (текстовый, графический, разрешение) (BIOS 10h).
040: 04А Ширина экрана (число колонок символов)
040: 050 Позиция курсора (младшая половина — колонка, старшая — ряд)
040: 060 Размер курсора (в младшем байте — последняя строка, в старшем — первая)
040: 067 Область данных POST
Поделиться:





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



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