Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ASMMET.DOC
Скачиваний:
24
Добавлен:
27.03.2015
Размер:
339.46 Кб
Скачать

Команды прерывания

Команды прерывания обеспечивают действие, аналогичное сигналам прерывания, т.е. переключение с одной программы на другую. Адрес перехода содержится в таблице векторов в памяти ЭВМ.

Команда INT имеет три формата

INT

11001100

INTO

11001110

INT mun

11001101

Mun

Тип прерывания задает адрес вектора в таблице векторов.

Адрес=mun*4

INT – специальное прерывание по контрольной точке, соответствуетINT#

INTO – специальное прерывание по переполнению, соответствуетINT4

При возникновении прерывания или выполнении команды прерывания в МП реализуется последоваельность прерывания, обеспечивающая запись в стек текущего значения регистров F, CS, IP.

В IP иCS помещается новое значение из двойного слова таблицы векторов, адрес которого определяется типом прерывания. Флажки регистра флаговIF иTF сбрасываются. Новое значениеIP иCS определяет начальный адрес процедуры прерывания. Возврат в прерванную программу осуществляется специальной командой:

IRET

11001110

По этой команде извлекаются из стека три слова и загружается последовательно в регистры IP, CS иF. Тем самым восстанавливается состояние, имевшее место при прерывании.

Команды строчной обработки

Команды строчной обработки или цепочечные команды имеют длину один байт и могут оперировать как со словом,так и с байтом. Вне префикса повторенияREP они оперируют только одним словом или байтом. Такие одиночные цепочечные команды называются примитивами. Независимо от формата примитива операнды определяются содержимым регистровSI, DI, DS, ES.Кроме выполнения указанной операции примитив автоматически вызывает инкремент или декремент регистровSI и (или)DI. Такое автоиндексирование позволяет повторяющееся использование примитива для последовательной обработки смежных байт или слов. Направление изменения индекса определяется флажкомDF, еслиDF=0, то автоинкремент. Иначе – автодекремент.

Использование цепочечных команд по сравнению с обычными дает следующие преимущества:

  • Длина команды – 1 байт

  • Оба операнда в памяти

  • Автоиндексирование делает ненужным явные команды изменения индексов, что увеличивает производительность.

Циклы с примитивами могут быть организованы обычным образом, с помощью команд ветвления или LOOP, а также с помощью префикса повторенияREP.

Машинный код префикса REP

1111001Z

ПрефиксREP обеспечивает автоматическое изменение регистраCX, проверку на конец и повторение указанного примитива.

С префиксом REP=F3 примитивы MOVS, LODS, STOS (не изменяющие флажков в регистреF) повторяются в соответствии со следующими правилами:

  1. Если CX = 0 закончить операцию

  2. Декремент CX на 1

  3. Выполнить примитив

  4. Повторить сначала

При работе с примитивами, изменяющими флажки регистра F (CMPS иSCAS) повторение будет идти со следующими правилами:

  1. Если CX = 0 илиZ = ZF закончить операцию (Z – нулевой бит кода операцииREP)

  2. Декремент CX на 1

  3. Выполнить примитив

  4. Повторить сначала

- Пересылка байта/слова

MOVS / MOVSB / MOVSW dst src

1010010 w

- Сравнить байты/слова

CMPS / CMPSB / CMPSW dst src

1010011 w

(src) – (dst) и установка признаков

- Сравнить байты/слова с содержимым аккумулятора

SCAS / SCASB / SCASW dst src

1010111 w

(src) – (dst) и установка признаков

- Загрузка байта/слова в аккумулятор

LODS / LODSB / LODSW src

1010110 w

- Запись содержимого аккумулятора в память

STOS / STOSB / STOSW dst

1010101 w

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