Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
02. МПС.docx
Скачиваний:
9
Добавлен:
01.05.2025
Размер:
57 Кб
Скачать
☆
  1. Программная модель 16-разрядного микропроцессора i8086.

16-разрядного микропроцессор, позволяющий создавать многопроцессорные системы. Процессор интересует нас, прежде всего, как набор регистров.

Процессор разбит на два функциональных блока - операционный и интерфейсный, которые работют одновременно. В результате исполнение одной команды совмещалось во времени с выборкой следующей инструкции или данных из памяти.

Регистр – быстродействующее запоминающее устройство, реализованное на электронных компонентах.

Все регистры имеют размер слова (16 разрядов), за каждым из них закреплено определенное имя. По назначению и способу использования регистры можно разбить на следующие группы:

регистры общего назначения (AX, BX, CX, DX, SI, DI, BP, SP);

Особенностью регистров общего назначения является то, что их можно использовать в любых арифметических, логических и т.п. машинных операциях.

сегментные регистры (CS, DS, SS, ES); Эти регистры используются для сегментирования адресов, которое является разновидностью модификации адресов и которое используется для сокращения размера команд. Процессор I8086 мог работать с 1 Мб памяти, т.е. 220 байтов (k=20), поэтому абсолютные адреса 20-разрядные. Размер сегмента должен быть равен 64 Кб, т.е. 216 байтов (m=16), поэтому смещения (или эффективный адрес) - это 16-разрядные адреса. Так как существует всего четыре сегментных регистра, то одновременно можно работать с четырьмя сегментами памяти. Если же надо работать с большим числом сегментов, то сохраняем содержимое сегментных регистров в обычных регистрах или в памяти, а затем записываем в них адреса нужных сегментов. Позже, если надо, можно восстановить прежние значения сегментных регистров.

указатель команд (IP);

В регистре IP всегда находится адрес команды, которая должна быть выполнена следующей. Более точно, в IP находится адрес этой команды, отсчитанный от начала сегмента команд, на начало которого указывает регистр CS. Поэтому абсолютный адрес этой команды определяется парой регистров CS и IP. Изменение любого из этих регистров есть ничто иное, как переход. Следовательно, содержимое регистра IP (как и CS) можно менять только командами перехода.

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

Флаг - это бит, принимающий значение 1 ("флаг установлен") или значение 0 ("флаг сброшен"). В i8086 используется 9 флагов, собранных в один 16-разрядный регистр, называемый регистром флагов (Flags)

Флаги делятся на две группы: флаги условий и флаги состояний.

Флаги условий:

  • CF   (carry flag) - флаг переноса. Наиболее полезен в арифметических операциях над числами без знака; например, если при сложении беззнаковых чисел получилась слишком большая сумма - с единицей переноса, которой нет места в ячейке, тогда флаг CF принимает значение 1, а если сумма "укладывается" в размер ячейки, то значением CF будет 0.

  • OF   (overflow flag) - флаг переполнения. Полезен в арифметических операциях над числами со знаком; например, если при сложении или вычитании знаковых чисел получился результат, по модулю превосходящий допустимую величину (произошло переполнение мантиссы), тогда флаг OF получает значение 1, а если переполнения мантиссы не было - значение 0.

  • ZF   (zero flag) - флаг нуля. Устанавливается в 1, если результат команды оказался нулевым.

  • SF   (sign flag) - флаг знака. Устанавливается в 1, если в операции над знаковыми числами получился отрицательный результат.

  • PF   (parity flag) - флаг четности. Равен 1 , если в 8 младших битах результата очередной команды содержится четное количество двоичных единиц.

  • AF   (auxiliary carry flag) - флаг дополнительного переноса. Фиксирует особенности выполнения операций над двоично-десятичными числами.

Флаги состояний:

  • DF   (direction flag) - флаг направления. Устанавливает направление просмотра строк в строковых командах: при DF=0 строки просматриваются "вперед" (от начала к концу), при DF=1 - в обратном направлении.

  • IF   (interrupt flag) - флаг прерываний. При IF=0 процессор перестает реагировать на поступающие к нему прерывания, а при IF=1 блокировка прерываний снимается.

  • TF   (trace flag) - флаг трассировки. При TF=1 после выполнения каждой команды процессор делает прерывание, чем можно воспользоваться при отладке программы.

Например, команда деления требует, чтобы первый операнд (делимое) находился в регистре AX или регистрах AX и DX (в зависимости от размера операнда), а команды управления циклом используют регистр CX в качестве счетчика цикла. Регистры AX, BX, CX и DX устроены так, что возможен независимый доступ к их старшей и младшей половинам. Обозначают эти половины буквами H (high - выше, старший) и L (low - ниже, младший) и первой буквой из названия регистра: AH и AL - в AX, BH и BL - в BX и т.д.

Приведем расшифровку названий регистров: AX   accumulator, аккумулятор; BX   base, база; CX   counter, счетчик; DX   data, данные; (буква X - от слова eXtended, расширенный: в процессоре 8080 были байтовые регистры A, B, C и D, но затем их расширили до размера слова) SI   source index, индекс источника; DI   destination index, индекс приемника; BP   base pointer, указатель базы; SP   stack pointer, указатель стека; IP   instruction pointer, указатель команд; SS   stack segment, сегмент стека; DS   data segment, сегмент данных; CS   code segment, сегмент команд; ES   extra segment, дополнительный сегмент.

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