Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы по дисциплине №1.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
4.19 Mб
Скачать

16. Структура мп i486 и его регистровая модель.

Программная (регистровая) модель процессора i486.

Это доступные программисту регистры, которыми он может пользоваться, используя команды ассемблера.

Существуют 2 подхода – все регистры универсальны;

- есть специализация (Intel)

В i486 объединено лучшее из этих двух подходов: есть специализация, но могут быть и заменены на другие регистры, но это надо дополнительно указать в команде. Если использовать специализацию регистров по умолчанию, то программа (ее объективный код) сокращается.

В программной модели i486 31 регистр (16 пользовательских и 15 системных).

1. Пользовательские rg i486

РОНы - 8шт. по 32 разр. для хранения данных или адресов (E-EXTENDET).

EAX – 32; AX – 16, AL и АН - 8. Старшие 2 байта отдельно адресовать нельзя. Эти 4 RG работают байтами, словами и двойными словами. Они универсальны, но имеют специализацию.

EAX/AX/AL - Аккумулятор. (промежуточные данные, множимое, делимое, IN,OUT, BCD). EBX/BX/BL – Base – базовый. Для указания базового (начального) адреса массива

ECX – Counter – счетчик. Циклы, сдвиги, цепочки.

ЕDX – Data – данные. Промежуточные данные, множитель, делитель, адреса портов в командах IN/OUT

ESP – Stack Pointer – указатель стека (PUSH, POP, CALL, RET, IRET) Адресует вершину стека в текущем сегменте.

EBS – Base Pointer - используется при адресации данных в стеке (при подпрограммах).

ESI – Source Index – регистр адреса текущего элемента цепочки источника.

EDI – Destination Index – регистр адреса текущего элемента приемника.

Сегментные регистры

CS, SS, DS, ES – сохранились с 8086 (1810), но теперь задают не физический адрес сегмента 64 кб, а косвенно через дескрипторную таблицу. Она для каждого сегмента задает: базовый адрес, размер(limit), права доступа(какие программы и в каких операциях могут обращаться к конкретному сегменту).

CS – сегментный регистр кода определяет текущий сегмент, где хранится программа (коды команды).

SS – сегментный регистр стека задает текущий сегмент памяти, где находится стек. Вершина стека – ESP.

DS – регистр, адресующий сегмент с данными.

ES, FS + GS – дополнительные сегменты регистра данных.

16 разрядное слово в сегментном регистре – «селектор». Машина работает с данными сегментами пока не поменяется селектор. Форматы и функции селекторов в R и P режимах разные (всего 3 режима R,P,V).

Каждый сегмент имеет базовый адрес. Для адресации внутри к нему прибавляется 32 – битное смещение(offset).

Указатель команды ip

Предназначен для адресации команд внутри текущего сегмента кода. После выборки очередной команды в IP автоматически устанавливается адрес следующей команды. При опережающей выборки (486) из ОП читается выровненный блок с 4-мя младшими нулями в адресе не учитывая границы между командами.

Регистр флагов. Flags.

8 флагов состояния + 6 флагов управления.

Флаги состояния фиксируют признаки результатов операций. (не всех - MOV)

CF (Carry) – арифметическая операция вызвала перенос (+), заем (-) из старшего бита

(31, 15, 7)→СF=1. Есть команды установки этого флага и его инверсии.

PF - паритет (четность). Если в младшем байте кол. 1 четное →=1.

AF – (Auxiliary) – вспомогательный перенос из младшей тетрадыA Для десятичной арифметики. Программно не доступен.

ZF (Zero)

SF (Sign) – копирует знак (31, 15, 7)

OF (Overfrow)

IOPL – (Input/Output Prevelege Level ) - Уровень привилегий ввода-вывода.