Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Юрий Владимирович самый уважаемы человек =)экза...doc
Скачиваний:
3
Добавлен:
12.09.2019
Размер:
1.41 Mб
Скачать

15.Індексні регістри.

Индексный регистр — регистр процессора в современных ЦПУ, используемый для автоматического изменения адреса операнда во время исполнения программы.

Общее назначение

Обычно индексный регистр используется для выполнения операций с индексными массивами.

Индексный регистр часто используется для косвенной адресации. Перед выполнением инструкции любая её часть, обычно адресная, может быть модифицирована прибавлением числа, содержащегося в индексном регистре. Например, исполнительный адрес в современном процессоре может формироваться как сумма базового, индексного и относительного адресов, хранящихся в индексном регистре.

Количество индексных регистров в ЦПУ может достигать нескольких десятков. Их быстродействие, обычно, на порядок выше быстродействия основной оперативной памяти. Индексный регистр повышают производительность ЦПУ, уменьшет объём программы, осуществляя автоматическую переадресацию одновременно с другими операциями.

Индексные регистры стали стандартной частью процессора во втором поколении компьютеров (примерно 1955-1964 годах).

Индексные регистры в процессорах архитектуры x86

В архитектуре x86 индексные регистры называются SI и DI. При базово-индексной адресации их содержимое может суммироваться с содержимым регистра BX.

Индексный регистр-источник SI применяется в качестве указателя адреса байта или слова в таких строковых командах, как LODS (загрузить строку), CMPS (сравнить строку), MOVS (переслать строку).

Индексный регистр-приёмник DI используется как указатель назначения для адреса байта или слова в строковых командах, таких как SCAS (сканировать строку), CMPS, MOVS, STOS (записать строку).

16. Спеціальні регістри

Данные из специального регистра источника поступают в регистр GRA через ассемблер регистров (ВЕА) или расширенный ассемблер регистров (ВЕЕА). Информация из специальных регистров (за исключением GRSPTL) не может быть передана в GRB. Запись данных в специальные регистры производится через ассемблер данных по шинам средств (ШИН СРЕД).

При обращении к специальным регистрам существуют определенные ограничения в зависимости от назначения регистра. Например, в некоторые регистры нельзя записывать информацию, а в других нельзя осуществлять контрольное считывание после записи. Для формирования адресов специальных регистров используется информация из регистра микрокоманд GRC, из регистра GRP, из селекторных каналов при выполнении разделенного цикла и от переключателей на пульте инженера при индикации с его помощью содержимого необходимых регистров.

17. Флаги ознак.

      32-разрядный регистр EFLAGS содержит некоторые флаги состояния и управления процессором, а также некоторые системные флаги (см. рисунок). После инициализации процессора, регистр флагов содержит значение 00000002h, его биты 1, 3, 5, 15 и 22..31 зарезервированы и программы не должны их использовать.       Некоторые флаги регистра EFLAGS можно изменять непосредственно, при помощи специальных команд (они описаны ниже). Для загрузки значений флагов в регистр EFLAGS и считываний из него предназначены команды LAHF, SAHF, PUSHF, PUSHFD, POPF и POPFD. Значение любого флага всегда можно проверить, для этого нужно сохранить содержимое регистра EFLAGS в стек, затем извлечь его в регистр общего назначения и проверить командами TEST и BT. Изменить значения флагов можно путём загрузки его через стек из регистра общего назначения, но некоторые флаги таким образом изменить нельзя (например, двухбитовое поле IOPL в защищённом режиме).       Регистр EFLAGS автоматически сохраняется процессором в стек при дальних вызовах и восстанавливается из него при дальних возвратах; при переключении задач процессор сохраняет содержимое EFLAGS в TSS старой задачи и загружает значение из TSS новой.

      До появления 32-разрядного процессора Intel386, регистр флагов был 16-разрядным и назывался FLAGS. Начиная с процессора Intel386, регистр флагов - 32-разрядный и называется EFLAGS (Extended FLAGS - расширенный FLAGS); при этом регистр FLAGS является младшей половиной регистра EFLAGS, все флаги, которые используют процессоры 8086 и Intel286 находятся как раз в младшей половине EFLAGS (т.е. во FLAGS), поэтому можно рассматривать регистр флагов как единый и называть его EFLAGS.       Говоря о флагах используют два термина флаг установлен - это значит, что бит, который соответствует этому флагу, принял значение 1; флаг сброшен - значение 0. Флаги встречаются не только в регистре EFLAGS, в 32-разрядном процессоре есть много регистров, целиком или частично состоящих из флагов - регистры управления, отладки, тестирования, MSR и т.д., поэтому термины "сброс" и "установка" флага употребляются везде, где идёт речь об изменении флагов.

Формат регистра флагов EFLAGS