Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
I8086.DOC
Скачиваний:
65
Добавлен:
02.05.2014
Размер:
1.36 Mб
Скачать

Замечания по программированию

Многие инструкции условных переходов имеют по несколько мнемоник для одного и того же кода операций. Та или иная мнемоника позволяет точнее указать, какой именно тип анализа с точки зрения человека выполняется командой перехода в данном месте программы, хотя функционально команды с разными мнемониками, на одинаковыми кодами операций абсолютно равнозначны. Например, мнемоника JZможет быть применена, когда предыдущая инструкция проверяла содержимое какой-либо ячейки памяти на нуль, в то время как мнемоникаJE, соответствующая той же самой машинной операции (код операции 74), применяется после инструкции сравнения двух величин. В том и другом случае переход произойдёт, если установлен флажокZF.

Инструкции, в названии которых содержатся слова “больше” или “меньше”, предназначены для анализа результатов сравнения чисел со знаком, а инструкции, содержащие слова “выше” и “ниже”, предназначены для анализа результатов сравнения беззнаковых чисел. В командах, предназначенных для переходов по результатам сравнения чисел со знаком, анализируются флажки SFиOF, а в командах для беззнаковых сравнений – флажокCF. Равенство или неравенство чисел независимо от наличия у них знака в любом случае отражается состоянием флажкаZF.

Инструкция JCXZявляется единственной командой условного перехода, которая не проверяет состояние какого-либо флажка или группы флажков. Вместо этого она проверяет содержимое регистраCX. Поскольку этот регистр используется в качестве счётчика при выполнении строковых операций, инструкцияJCXZдополняет набор префиксов повторения, специально предназначенных для работы совместно с операциями обработки строк. Кроме того, эта команда может использоваться для организации циклов при использовании регистраCXв качестве счётчика итераций вместо инструкцииLOOP, когда значение счётчика не уменьшается на 1 при каждом проходе цикла, как то предусмотрено последней командой.

      1. Jmp– безусловный переход

EB cb

JMP rel8

безусловный короткий переход

E9 cw

JMP rel16

безусловный ближний переход

FF /4

JMP r/m16

безусловный ближний косвенный переход

EA cd

JMP ptr16:16

безусловный дальний переход

FF /5

JMP m16:16

безусловный дальний косвенный переход

Описание.ИнструкцияJMPвыполняет безусловный переход по указанному адресу.

Инструкция JMPобеспечивает ближние (внутрисегментные) и дальние (межсегментные) переходы. Ближние переходы осуществляются с применением относительной (с 8- или 16-разрядным отклонением) и косвенной адресации, дальние – с применением прямой и косвенной адресации.

Флажкине изменяются.

      1. Lahf– загрузка флагов состояния в регистрAh

9F

LAHF

загрузка младшего байта регистра FLAGS в AL

Описание.Содержимое младшего байта регистра флагов заносится в регистрAH.

Флажкине изменяются.

      1. Lds– загрузка дальнего указателя для сегмента данных

C5 /r

LDS r16, m16:16

загрузка дальнего указателя в DS:r16

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

В сегментный регистр из памяти заносится селектор сегмента. Смещение загружается в общий регистр, определяемый полем RegбайтаModRegR/M. ПоляModиR/Mэтого байта указывают, где расположена область памяти, содержащая исходное значение указателя.

Флажкине изменяются.