Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вопросы к ГОСАМ ВМКСС 0704.docx
Скачиваний:
19
Добавлен:
27.04.2019
Размер:
2.8 Mб
Скачать

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

Система команд - это набор допустимых для данного процессора управляющих кодов и способов адресации данных. Система команд жестко связана с конкретным типом процессора, поскольку определяется аппаратной структурой блока дешифрации команд, и обычно не обладает переносимостью на другие типы процессоров (хотя может иметь место совместимость “снизу-вверх” в рамках серии процессоров, как, например, в серии i80x86 ).

Типовая структура формата команды:

1.КОП - код операции - двоичный код, однозначно указывающий процессору на выполнение конкретных действий (пересылка, сложение и т.п.), и определяющий при этом форму задания адресов операндов; 1 или 2 байта;

2.АЧ - адресная часть - двоичное число, которое может представлять собой адрес (адреса) операндов, значение операнда, адрес следующей команды (адрес перехода, передачи управления). 1 до 4 байт.

Индексная (автоинкрементная и автодекрементная ) адресация. Её назначение.

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

Рисунок. Формирование адреса операнда при индексной адресации.

Часто в команду с индексной адресацией включают признак, определяющий шаг индексации Т (Т=1,2,4 и т.д.), что позволяет осуществлять адресацию массивов через байт, слово, двойное слово и т.д.

В современных процессорах (например в Intel 80386 и выше) применяют все возможные сочетания из базового адреса, индексного адреса, относительного адреса и шага.

В систему команд традиционно входят такие группы:

  • пересылка данных (регистр-регистр, регистр-память, память-регистр, специфические команды типа память-память);все команды пересылки выполняют, по сути, копирование данных из ячейки-источника в ячейку-приемник;

  • арифметические операции (+, –, *, : );

  • логические операции (and, or, xor, not) и операции сдвига;

  • ввод-вывод – специфические команды для передачи данных между процессором и устройствами ввода-вывода, размещенными в адресном пространстве ввода-вывода;

  • передача управления – при выполнении такой команды процессор записывает в счетчик команд PC адрес следующей команды, взятый из адресной части текущей команды;

  • специальные – останов, сброс, управление прерываниями, управление режимом пониженного энергопотребления и т.п.

Команды передачи управления(вызов подпрограмм).

Обычно в программе есть точки, в которых нужно принять решение о том, какая команда будет выполняться следующей. Это решение может быть:

  • безусловным — в данной точке необходимо передать управление не той команде, которая идет следующей, а другой, которая находится на некотором удалении от текущей команды;

  • условным — решение о том, какая команда будет выполняться следующей, принимается на основе анализа некоторых условий или данных.

То, какая команда программы должна выполняться следующей, микропроцессор узнает по содержимому пары регистров cs и eip/ip:

cs — сегментный регистр кода, в котором находится физический (базовый) адрес текущего сегмента кода;

eip/ip — регистр указателя команды, в котором находится значение, представляющее собой смещение в памяти следующей команды, подлежащей выполнению, относительно начала текущего сегмента кода.

Таким образом, команды передачи управления изменяют содержимое регистров cs и eip/ip, в результате чего микропроцессор выбирает для выполнения не следующую по порядку команду программы, а команду в некотором другом участке программы.

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

1)Команды безусловной передачи управления(КОП Адрес JMP addr):

  • команда безусловного перехода;

  • вызова процедуры и возврата из процедуры;

  • вызова программных прерываний и возврата из программных прерываний.

2)Команды условной передачи управления(КОП М Адрес J(z/e/…) addr):

  • команды перехода по результату команды сравнения cmp;

  • команды перехода по состоянию определенного флага;

  • команды перехода по содержимому регистра ecx/cx.

3)Команды управления циклом (Loop):

  • команда организации цикла со счетчиком ecx/cx;

  • команда организации цикла со счетчиком ecx/cx с возможностью досрочного выхода из цикла по дополнительному условию.

4)Команды вызова (Call)