Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛК_МашЗавЯП_А4.doc
Скачиваний:
157
Добавлен:
10.06.2015
Размер:
19.94 Mб
Скачать
      1. Цепочечные операции

        Команда

        Описание

        REP

        REPE и REPZ

        REPNE и REPNZ

        REPeat string operation – повторить цепочечную операциюю

        Префикс, означающий повтор следующей за ним операции до обнуления ECX. Префикс имеет разновидности:

        REPZ (REPE) - выполнять, пока не нуль (ZF=1),

        REPNZ (REPNE) – выпо лнять, пока нуль.

        MOVSприемник, источник

        MOVSB

        MOVSW

        MOVSD

        MOVe String Byte/Word/Double word operands – пересылкацепочек.Приемник, источник можно явно не указывать. Команда передает из цепочки, адресуемой DS:[ESI], в цепочку приемника, адресуемую ES:[EDI].Разновидности для разных элементов цепочки:

        • байт,

        • слово или

        • двойное слово.

        LODSисточник

        MOVSB

        MOVSW

        MOVSD

        LOaD String Byte/Word/Double word operands – загрузкацепочек.Загружает из ячейки памяти, адресуемой DS:ESI/si, в регистр AL/AX/EAX цепочку, и изменяет содержимое SI на величину, равную длине цепочки. Разновидности для разных элементов цепочки:

        • байт,

        • слово или

        • двойное слово.

        STOSприемник

        STOSB

        STOSW

        STOSD

        STOre String Byte/Word/Double word operands – сохранение цепочек.Сохраняет в ячейке памяти, адресуемой DS:ESI/SI, из регистра AL/AX/EAX цепочку, и изменяет содержимое SI на величину, равную длине цепочки. Разновидности для разных элементов цепочки:

        • байт,

        • слово или

        • двойное слово.

        SCASприемник

        SCASB

        SCASW

        SCASD

        SCAn String Byte/Word/Double word – сканированениецепочек.Команда вычитает элемент цепочки приемника из содержимого аккумулятора (AL\AX\EAX) и модифицирует флаги. Разновидности для разных элементов цепочки:

        • байт,

        • слово или

        • двойное слово.

        CMPS приемник, источник

        CMPSB

        CMPSW

        CMPSD

        CoMPare String Byte/Word/Double word operands - сравнениецепочек.Команда вычитанет элемент цепочки приемника из соответствующего элемента цепочки источника и модифицирует флаги. Регистры EDI и ESI автоматически продвигаются на следующий элемент. Разновидности для разных элементов цепочки:

        • байт,

        • слово или

        • двойное слово.

      2. Команды управления

Управление флагами

Команда

Описание

CLC

CLear Carry flag

Сброс флага переноса.

STC

SeT Carry flag

Установка флага переноса.

CMC

CoMplement Carry flag

Инверсия флага переноса.

CLD

CLear Direction flag

Сброс флага направления – для цепочечных команд процессор будет выполнять инкремент регистров SI DI.

STD

SeT Direction flag

Установка флага направления - для цепочечных команд процессор будет выполнять декремент регистров SI DI.

CLI

CLear Interrupt flag

Сброс флага прерываний - запрет маскируемых аппаратных прерываний.

STI

SeT Interrupt flag

Установка флага прерываний - разрешение маскируемых аппаратных прерываний.

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

Команда

Описание

JMP метка

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

Имеется несколько форм, различающихся расстоянием метки перхода от текущего адреса, и способом задания целевого адреса. При работе в Windows используется в основном внутрисегментный переход (NEAR) в пределах 32-битного сегмента. Адрес перехода может задаваться непосредственно (в программе это метка) или косвенно, т.е. содержаться в ячейке памяти или регистре (JMP [EAX]).

Другой тип перехода - короткий переход (SHORT), занимает всего 2 байта. Диапазон смещения, в пределах которого происходит переход: -128 ... 127. Использование такого перехода весьма ограниченно.

Jcc метка

Jumpifcondition- условный переход. Команда осуществляет переход при выполнении условия, заданного в . поле условия. Возможны условия, кодируемые 4-ех битным кодом:

  • JA/JNBE - перейти, если выше.

  • JAE/JNB - перейти, если выше или равно.

  • JB/JNAE - перейти, если ниже

  • JBE/JNA - перейти, если ниже.

  • JC - перейти, если перенос

  • JE/JZ - перейти, если нуль

  • JG/JNLE - перейти, если больше.

  • JGE/JNL - перейти, если больше или равно

  • JL/JNGE - перейти, если меньше.

  • JLE/JNG - перейти, если меньше или равно

  • JNC - перейтИ, если нет переноса.

  • JNE/JNZ - перейти, если меньше или равно

  • JNO - перейти, если нет переполнения

  • JNP/JPO - перейти, если нет паритета

  • JNS - перейти, если нет знака

  • JO - перейти, если есть переполнения

  • JP/JPE - перейти, если есть паритет

  • JS - перейти, если есть знак

  • JCXZ - переход, если СХ=0

  • JECXZ - переход, если ECX=0

В плоской модели команды условного перехода осуществляют переход в пределах 32-битного регистра.

LOOPметка

LOOP control by register CX - команды управления циклом по регистру CX. Команды этой группы используют счетчик цикла в регистре CX. В них осуществляется декремент CX и проверка его содержимого. Тело цикла повторяется пока содержимое CX не равно нулю. Если содержимое CX равно нулю, то управление передается команде, метка которой опреджелена в команде LOOP.

LOOPE метка

LOOPZ метка

LOOP control by register CX not Equal 0 and ZF=1 - команды управления циклом по регистру CX с учетом ZF=1. Команды этой группы основаны на командах LOOP. Дополнительно в них в теле цикла анализируется флаг ZF. Цикл принудительно завершается, если ZF= 1.

LOOPNE метка

LOOPNZ метка

LOOP control by register CX not Equal 0 and ZF=0 - команды управления циклом по регистру CX с учетом ZF=0. Команды этой группы основаны на командах LOOP. Дополнительно в них в теле цикла анализируется флаг ZF. Цикл принудительно завершается, если ZF= 0.

CALLцель

CALL – вызов.

Передает управление процедуре (метке) с сохранением в стеке адреса, следующей за CALL командой. В плоской модели адрес возврата представляет собой 32-битное смещение. Межсегментный вызов предполагает сохранение в стеке селектора и смещения, т.е. 48-битной величины (16 бит - селектор и 32 бита - смещение).

RET [N]

RETurn from procedure – возврат изпроцедуры

Необязательный параметр N предполагает, что команда также автоматически чистит стек (освобождает N байт). Команда имеет разновидности, которые выбираются ассемблером автоматически, в зависимости от того, является процедура ближней или дальней.

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