Вот код из книги:
int GetBaseMemory()
{
// объявляем переменные для получения младшего и старшего байтов
BYTE lowBase = 0, highBase = 0;
// читаем информацию из CMOS-памяти
_outp(0x70, 0x15); // записываем номер первого регистра
lowBase = _inp(0x71); // читаем младший байт
_outp(0x70, 0x16); // записываем номер первого регистра
highBase = _inp(0x71); // читаем старший байт
// возвращаем размер базовой памяти в килобайтах
return ((highBase << 8) | lowBase);
}
void KeyBoard_OnOff(bool bOff)
{
BYTE state; // текущее состояние
if (bOff) // выключить клавиатуру
{
state = _inp(0x61); // получаем текущее состояние
state |= 0x80; // устанавливаем бит 7 в 1
_outp(0x61, state); // записываем обновленное значение в порт
}
else // включить клавиатуру
{
state = _inp(0x61); // получаем текущее состояние
state &= 0x7F; // устанавливаем бит 7 в 0
_outp(0x61, state); // записываем обновленное значение в порт
}
}
И можно ли сразу с нормальным результатом такое изучать,не зная ассемблер,архитектуру компа и т.п?