
- •Процессор Intel в реальном режиме.
- •Регистры процессора.
- •Сегментные регистры.
- •Регистр флагов.
- •Способы адресации.
- •Архитектура компьютера.
- •Основные блоки процессора.
- •Организация памяти в микропроцессоре.
- •Страничная адресация. Адресация в защищенном режиме.
- •Механизм защиты.
- •Прерывания и исключения.
- •Обработчики прерываний и прерывания от внешних устройств.
- •Контроллер прерываний.
- •Прерывания в защищенном режиме.
- •Программирование на уровне портов ввода-вывода.
- •Маскирование и размаскирование.
- •Получение доступа к портам в Windows 2000/xp
- •Оперативная память.
- •Устройство и принципы функционирования озу
- •Типы микросхем памяти.
Процессор Intel в реальном режиме.
КЭШ
ОЗУ(RAM)
HDD
Регистры процессора
Стоимость снизу вверх возрастает, скорость тоже, а объем уменьшается.
Регистры процессора.
Регистр процессора – это блок ячеек памяти, образующий сверхбыструю оперативную память внутри процессора. Используется самим процессором и большей частью ограничено-доступен программисту. Начиная с 386го процессора Intel для пользовательских программ доступно 16 основных регистров плюс еще 11 регистров для работы с мультимедийными приложениями и числами с плавающей запятой. Все команды, так или иначе, изменяют значение регистров и всегда быстрее, а зачастую и удобнее обращаться к регистру, чем к другой памяти.
Из реального, но не из виртуального режима, помимо основных регистров доступны также регистры управления памятью, просто регистры управления, отладочные регистры, но они не применяются для решения повседневных задач и рассматриваться не будут.
Регистры общего назначения:
Существует
8 регистров общего назначения. Рассмотрим
первые 4 из них.
EAX – аккумулятор
EBX – база
ECX – счетчик
EDX – данные
Они могут быть использованы без ограничений для любых целей: временного хранения данных, аргументов и результатов операций. Названия регистров происходят от того, что некоторые команды применяют их специальным образом. Например, аккумулятор часто необходим для хранения результата действий, регистр данных, в случае если результат не умещается в аккумулятор, получает старшую часть результата, регистр-счетчик работает как счетчик цикла и строковых операций, а регистр-база при так называемой адресации по базе. Младшие 16 бит каждого из этих регистров, кроме этого отдельные байты 16ти битных регистров AX-DX могут использоваться как 8ми битные регистры, остальные 4 регистра ESI(индекс источника), EDI (индекс приемника), EBP (указатель базы), ESP (указатель стека) имеют более конкретное назначение и применяются для хранения всевозможных временных переменных. Регистры ESI и EDI необходимы в строковых операциях при работе со стеком. Также как в случае с первыми регистрами EAX EDX младшие половины этих регистров называются SI, DI, BP, SP соответственно, и могут быть использованы отдельно.
Сегментные регистры.
При использовании сегментированных моделей памяти для формирования любого адреса нужны 2 числа: адрес начала сегмента и смещение искомого байта относительно начала этого сегмента. Операционные системы могут размещать сегменты, с которыми работает программа пользователя в разных местах памяти, соответственно сегменты способны оказаться где угодно. Поэтому программа, обращаясь к ним, применяет вместо настоящего адреса начала сегмента 16 битное число, называемое селектором. В процессорах Intel предусмотрено 6 16ти битных регистров: CS, DS, ES, FS, GS, SS, где хранятся селекторы. В любой момент времени можно изменить параметры, записанные в этих регистрах. В отличие от первых четырех сегментных регистров(DS-GS), регистры CS и SS отвечают за сегменты 2ух особенных типов. Сегмент кода и сегмент стека. Первые содержат программу, исполняющуюся в данный момент, следовательно, запись нового селектора в этот регистр приводит к тому, что далее исполняется не следующая по тексту программы команда, а команда из находящегося в другом сегменте с тем же смещением. А смещение очередной выполняемой команды всегда хранится в специальном регистре(EIP), запись в который также приведет к тому, что далее будет исполнена какая-нибудь другая команда. На самом деле все команды передачи управления (перехода, условного перехода, цикла, вызова подпрограммы и т.п.) осуществляют соответствующие записи CS и EIP.