Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
palivo_finalv0_2.docx
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
2 Мб
Скачать
☆

31. Сегментні регістри

У програмній моделі мікропроцесора є шість сегментних регістрів: cs, ss, ds, es, gs, fs. Їх існування обумовлено специфікою організації і використовування оперативної пам'яті мікропроцесорами Intel. Вона полягає в тому, що мікропроцесор апаратний підтримує структурну організацію програми у вигляді трьох частин, званих сегментами. Для того, щоб вказати на сегменти, до яких програма має доступ в конкретний момент часу, і призначені сегментні регістри. В цих регістрах містяться адреси пам'яті з яких починаються відповідні сегменти. Логіка обробки машинної команди побудована так, що при вибірці команди, доступі до даних програми або до стека неявно використовуються адреси в цілком певних сегментних регістрах. Мікропроцесор підтримує наступні типи сегментів:

1. Сегмент коду. Містить команди програми. Для доступу до цього сегменту служить регістр cs (code segment register) — сегментний регістр коду. Він містить адресу сегменту з машинними командами, до якого має доступ мікропроцесор.

2. Сегмент даних. Містить оброблювані програмою дані. Для доступу до цього сегменту служить регістр ds (data segment register) — сегментний регістр даних, який береже адресу сегменту даних поточної програми.

3. Сегмент стека. Цей сегмент є областю пам'яті, званою стеком. Роботу із стеком мікропроцесор організовує за наступним принципом: останній записаний в цю область елемент вибирається першим. Для доступу до цього сегменту служить регістр ss (stack segment register) — сегментний регістр стека, що містить адресу сегменту стека.

Джерело: http://kit.znu.edu.ua/Meth/arch1.pdf

32. Регістр EFALGS

EFLAGS — регістр прапорів. Розрядність eflags/flags — 32/16 біт. Окремі біти даного регістра мають певне функціональне призначення і називаються прапорами. Молодша частина цього регістра повністю аналогічна регістру flags для i8086.

Виходячи з особливостей використовування, прапори регістра eflags/flags можна розділити на три групи:

8 Прапорів полягання

Ці прапори можуть змінюватися після виконання машинних команд. Прапори полягання регістра eflags відображають особливості результату виконання арифметичних або логічних операцій. Це дає можливість аналізувати полягання обчислювального процесу і реагувати на нього за допомогою команд умовних переходів і викликів підпрограм.

1 Прапор управління

Позначається df (Directory Flag). Він знаходиться в 10-у біті регістра eflags і використовується ланцюжковимі командами.

5 Системних прапорів

Керують уведення-виведенням, маскованими перериваннями, відладкою, перемиканням між задачами і віртуальним режимом 8086.

Джерело: http://kit.znu.edu.ua/Meth/arch1.pdf

33. Регістр ESP

Регістр ESP / SP завжди вказує на вершину стека , тобто містить зсув , по якому в стек був занесений останній елемент . Команди роботи зі стеком неявно змінюють цей регістр так , щоб він вказував завжди на останній записаний в стек елемент . Якщо стек порожній , то значення esp одно адресою останнього байта сегмента , виділеного під стек . При занесенні елемента в стек процесор зменшує значення регістра esp , а потім записує елемент за адресою нової вершини. При отриманні даних з стека процесор копіює елемент, розташований за адресою вершини , а потім збільшує значення регістра покажчика стека esp . Таким чином, виходить , що стек росте вниз , у бік зменшення адрес.

Джерело: http://otvet.mail.ru/question/69008232

34 Регістр EIP

EIP

Начиная с процессора 80386 была введена 32-разрядная версия регистра-указателя — EIP (англ. Extended Instruction Pointer). Принцип работы EIP в целом схож с работой регистра IP. Основная разница состоит в том, что в защищённом режиме, в отличие от реального режима, регистр CS является селектором.

IP (англ. Instruction Pointer) — регистр, содержащий адрес-смещение следующей команды, подлежащей исполнению, относительно кодового сегмента CS в процессорах семейства x86.

Регистр IP связан с CS в виде CS:IP, где CS является текущим кодовым сегментом, а IP — текущим смещением относительно этого сегмента.

Принцип работы

Например, CS содержит значение 2CB5[0]H, в регистре IP хранится смещение123H.

Адрес следующей инструкции, подлежащей исполнению, вычисляется путем суммирования адреса в CS (сегменте кода) со смещением в регистре IP:

2CB50H + 123H = 2CC73H – адрес следующей инструкции для исполнения

При выполнении текущей инструкции процессор автоматически изменяет значение в регистре IP

http://ru.wikipedia.org/wiki/Регистр_процессора

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]