Система команд. Эволюция системы команд процессоров фирмы Intel. Стековые команды

Страницы работы

Содержание работы

Система команд

На следующем рисунке схематически показана эволюция системы команд процессоров фирмы Intel.

Ее основу образует базовая система команд первого процессора 8086, которая не изменилась при смене поколений процессоров. В следующем процессоре 80186 было добавлено несколько новых команд. Система команд процессора 80286 расширена путем введения новых команд для аппаратной поддержки функций операционной системы по управлению памятью, средствам защиты и переключению задач. Эти команды предназначены для системных программистов и редко применяются в прикладных программах. В процессорах 80386 и i486 система команд усовершенствована по следующим направлениям:

  • большинство команд базовой системы допускают операции с 32-битными операндами и новыми режимами адресации;
  • добавлены новые и удобные для прикладных программистов команды операций над двоичными цепочками и битами, а также команды двойного сдвига;
  • для Р-режима введены команды поддержки управления памятью, защиты, организации виртуальной памяти и отладки;
  • улучшены  алгоритмы  выполнения некоторых команд, что привело к значительному сокращению времени выполнения соответствующих команд, например команд умножения.

Рассмотрим лишь некоторые команды. Выделяют следующие группы команд:

1.  команды передачи данных;

2.  преобразования данных;

3.  арифметические;

4.  логические и сдвиги;

5.  команды передачи управления;

6.  команды управления МП;

7.  цепочечные команды.

Команды передачи данных

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

Подгруппы:

§  команды общих передач;

§  стековые команды;

§  команды ввода/вывода.

Команды общих передач

а)  Пересылают данные из одного места в другое.

Отличительная особенность: не влияют на состояние флажков.

MOV dst, src ;      dst ¬ (src)

Может передавать что угодно и куда угодно.

В МП 8086 есть исключения:

1)  нельзя передавать const в сегмент регистр;

2)  нельзя передавать из ячейки памяти в ячейку памяти.

Допускают любой режим адресации.

б)  Команды обмена

       XCHG dst, src;     (dst) « (src)

Стековые команды

Стек – это область оперативной памяти, которая находится в текущем сегменте стека и предназначена для временного хранения любых данных. Запись и чтение данных в стеке основаны на принципе LIFO «первый пришел – последний ушел». Для этих целей обычно отводится участок памяти с наибольшими адресами, а стек расширяется в сторону уменьшения адресов. Поскольку обычно программа загружается, начиная с меньших адресов, такой прием во многих случаях позволяет избежать перекрытия областей программы и стека. Начало сегмента стека определяет сегментный регистр SS, а регистр SP адресует вершину стека. В указатель вершины стека (SP) предварительно помещается наибольший адрес области основной памяти, отведенной под стек. Далее указатель вершины стека SP используется для хранения адреса последнего члена последовательности (вершины стека), записанного в стек.

а)  включение (загрузка) в стек: PUSHsrc ; SS:SP ¬ (src)

§  модификация SP: SP ¬ SP - 2;

§  включение в новую вершину стека.

При операциях загрузки стек растет по направлению младших адресов сегмента стека. Другими словами, стек растет по направлению к базовому адресу сегмента стека.

б)  извлечение (считывание) из стека:  POPdst ;   dst¬ (SS:SP)

§  извлечение из вершины стека

§  модификация SP: SP ¬ SP + 2

Эти операции поясняются следующим рисунком:

Команды ввода/вывода

а)  Ввод из порта : IN acc, port;

acc – аккумулятор (AX или AL);

port – адрес порта (0-255).Осуществляется передача байта или слова из порта ввода-вывода в аккумулятор.

INacc, DX;

Передача байта или слова в аккумулятор из порта ввода-вывода, адрес которого находится в DX. Этот режим позволяет адресовать до 65536 портов.

б)  Вывод в порт : OUT port, acc;

Байт или слово передается в порт ввода-вывода из аккумулятора (AX, AL).

OUT  DX, acc;

Байт или слово из аккумулятора (AX, AL) передается в порт ввода-вывода, адрес которого указан в DX.

Арифметические команды

При выполнении арифметических команд по результату модифицируются все арифметические флажки:

CF

– перенос;

AF

– межтетрадный перенос;

ZF

– нулевой результат;

SF

– знак результата;

OF

– переполнение;

PF

– четное число единиц младшего байта результата.

а)  Сложение

ADD dst, src ;        dst  ¬ (dst) + (src)

б)  Сложение с переносом

ADC dst, src ;        dst  ¬ (dst) + (src) + (CF)

в)  Инкремент

INC src ;             src  ¬ (src) + 1

Эта команда не изменяет флажка ZF.

г)  Вычитание

SUB dst, src ;        dst  ¬ (dst) - (src)

д)  Вычитание с заёмом

SBB dst, src ;        dst  ¬ (dst) - (src) – (CF)

Похожие материалы

Информация о работе