Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
shpory_po_poryadku_proga.doc
Скачиваний:
4
Добавлен:
15.04.2019
Размер:
1.07 Mб
Скачать

25 Команды организации циклов:

для предотвращения выполнения цикла при нулевом ecx или cx нужна команда jecxz/jcxz. Если этого не сделать, то при изначально нулевом ecx/cx цикл повторится 4 294 967 295 или 65 536 раз;

Команда организации цикла со счетчиком. LOOP метка

1. От содержимого регистра CX (ЕСХ) отнимается 1 и результат снова помещается в регистр CX(ЕСХ) 2. Если содержимое регистра CX(ЕСХ) оказывается равным 0, то больше ничего не делается, а точнее, выполняется следующая за командой LOOP команда. 3.Если же содержимое регистра CX(ЕСХ) не равно 0, то передается управление на команду, которая помечена меткой, указанной в команде LOOP

Эта команда используется для организации циклов, в которых регистр ECX (CX) играет роль счетчика.

Команда организации цикла с учетом флага ZF. Имеются разновидности команды LOOP: LOOPE метка цикл, пока равно LOOPZ метка цикл, пока ноль LOOPNE метка цикл, пока не равно LOOPNZ метка цикл, пока не ноль

Проанализировать регистр ZF: 1.От содержимого регистра CX (ЕСХ) отнимается 1 и результат снова помещается в регистр CX 2.Если содержимое регистра CX(ЕСХ) =0, выполняется следующая за командой LOOP команда. 3.Если содержимое регистра CX(ЕСХ) не равно 0, то передается управление на команду, которая помечена меткой, указанной в команде LOOP .

4. Если регистр ZF=0, то для команд LOOPE и LOOPZ это означает выход из цикла, а для команд LOOPNE и LOOPNZ – переход к началу цикла. 5.  Если регистр ZF=1, то для команд LOOPE и LOOPZ это означает переход к началу цикла, а для команд LOOPNE и LOOPNZ – выход из цикла. При этом надо учитывать, что сами команды флаг ZF не меняют, поэтому флаг должен быть установлен предыдущей командой

26 Команды пересылки:

Команда пересылки данных. MOV приемник, источник Команда MOV действует аналогично операторам присваивания из языков высокого уровня, то есть mov ах, bх ~ ах = bх

Условная пересылка данных. Условная пересылка данных

(команды появились в процессорах PentiumPro и Pentium II). CMOVcc приемник,источник Это набор команд, которые копируют содержимое источника в приемник, в зависимости от значения тех или иных флагов из регистра FLAGS Источник - регистр общего назначения или переменная, а приемником - только регистр.

Команда пересылки с расширением знака MOVSX приемник, источник Копирует содержимое источника (регистр или переменная размером в байт или слово) в приемник (16- или 32-битный регистр) и расширяет знак аналогично командам CBW/CWDE

Команда пересылки с расширением нулями MOVZX приемник, источник Пересылка с расширением нулями. Копирует содержимое источника (регистр или переменная размером в байт или слово) в приемник (16- или 32-битный регистр) и расширяет нулями.

27 Логические команды:

логическое И - and, логическое ИЛИ - or,

Исключающее ИЛИ - xor; NOT инвертирует бит источника. логические, арифметические и циклические сдвиги; проверка битов и операндов; установка и очистка битов (флагов) регистра состояния процессора

( PSW).

циклические

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

В бит флага переноса (если он используется) записывается значение старшего бита при циклическом сдвиге влево и младшего бита при циклическом сдвиге вправо. Соответственно, значение бита флага переноса будет переписываться в младший разряд при циклическом сдвиге влево и в старший разряд при циклическом сдвиге вправо.

Арифметические

Для сдвига влево

если of=1, то текущее значение флага cf и выдвигаемого слева бита операнда различны; если of=0, то текущее значение флага cf и выдвигаемого слева бита операнда совпадают

Логические

для сдвигов вправо

Флаг of всегда сбрасывается в ноль в операциях сдвига на один разряд

Циклические

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

Отличие этого сдвига от rcl(rcr) в том, что очередной сдвигаемый бит одновременно вдвигается в операнд справа(слева) и становится значением флага cf.

Проверка битов и флагов

Команды установки и очистки битов регистра состояния процессора (то есть флагов) позволяют установить или очистить любой флаг, что бывает очень удобно. Каждому флагу обычно соответствуют две команды, одна из которых устанавливает его в единицу, а другая сбрасывает в нуль. Флагу переноса C (от Carry) будут соответствовать команды CLC (очистка) и SEC или STC (установка).

SAHF Запись содержимого регистра АН в регистр флагов

LAHF Загрузка в АН содержимого регистра флагов

Команда sahf копирует разряды 7, 6, 4, 2 и 0 регистра АН в регистр флагов процессора, устанавливая тем самым значения флагов SF, ZF, AF, PF и CF соответственно. Команда не имеет операндов. Команда sahf (совместно с командой lahf) дает возможность читать и изменять значения флагов процессора, в том числе флагов SF, ZF, AF и PF, которые нельзя изменить непосредственно. Однако следует иметь в виду, что команда sahf заполняет только младший байт регистра флагов, поэтому нельзя изменить с ее помощью состояние флага OF

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