Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архив1 / docx56 / kursach.docx
Скачиваний:
21
Добавлен:
01.08.2013
Размер:
87.59 Кб
Скачать

5.2.5 Изменение знака операнда

Схема команды: neg источник

Назначение: изменение знака (получение двоичного дополнения) источника.

Алгоритм работы:

- выполнить вычитание (0 – источник) и поместить результат на место источника;

- если источник=0, то его значение не меняется.

Применение:

Команда используется для формирования двоичного дополнения операнда в памяти или регистре. Операция двоичного дополнения предполагает инвертирование всех разрядов операнда с последующим сложением операнда с двоичной единицей. Если операнд отрицательный, то операция neg над ним означает получение его модуля.

5.2.6 Увеличение операнда на 1

Схема команды: inc операнд

Назначение: увеличение значения операнда в памяти или регистре на 1.

Применение:

Команда используется для увеличения значения байта, слова, двойного слова в памяти или регистре на единицу. При этом команда не воздействует на флаг cf.

5.2.7 Уменьшение операнда на 1

Схема команды: dec операнд

Назначение: уменьшение значения операнда в памяти или регистре на 1.

Применение:

Команда dec используется для уменьшения значения байта, слова, двойного слова в памяти или регистре на единицу. При этом заметьте то, что команда не воздействует на флаг cf.

5.3 Команды сдвига

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

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

- обрабатывают байт или слово;

- имеют доступ к регистру или к памяти;

- сдвигают влево или вправо;

- сдвигают на величину до 8 бит (для байта) и 16 бит (для слова);

- сдвигают логически (без знака) или арифметически (со знаком).

Значение сдвига на 1 может быть закодировано как непосредcтвенный операнд, значение больше 1 должно находиться в регистре CL.

В качестве операнда используется 8-ми, 16-ти, 32-х битовые значения, в качестве счетчика, либо изображение, либо СL.

При выполнении команд сдвига флаг CF всегда содержит значение последнего выдвинутого бита. Существуют следующие команды cдвига:

SHR - логический (беззнаковый) сдвиг вправо;

SHL - логический (беззнаковый) сдвиг влево;

SAR - арифметический сдвиг вправо;

SAL - арифметический сдвиг влево.

shr приёмник, счётчик – логический сдвиг вправо. Сдвиг всех битов операнда вправо на один разряд, при этом выдвигаемый справа бит становится значением CF, одновременно слева в операнд вдвигается нулевой бит. Это повторяется количество раз, равное значению второго операнда. Приёмником может быть регистр или переменная. В качестве счётчика может использоваться регистр CL или непосредственное значение. Счётчик может принимать значения от 0 до 31. Аналогично shl (логический сдвиг влево).

sar приёмник, счётчик - арифметический сдвиг вправо. Cдвиг всех битов операнда вправо на один разряд, при этом выдвигаемый справа бит становится значением флага переноса cf. Одновременно слева в операнд вдвигается не нулевой бит, а значение старшего бита операнда, то есть по мере сдвига вправо освобождающиеся места заполняются значением знакового разряда. По этой причине этот тип сдвига и называется арифметическим. Указанные выше два действия повторяются количество раз, равное значению второго операнда. Аналогично sal (арифметический сдвиг влево).

Команды циклического сдвига

Циклический сдвиг представляет собой операцию сдвига, при которой выдвинутый бит занимает освободившийся разряд. Существуют следующие команды циклического сдвига:

ROR - циклический сдвиг вправо;

ROL - циклический сдвиг влево;

RCR - циклический сдвиг вправо с переносом;

RCL - циклический сдвиг влево с переносом.

rcl приёмник, счётчик – циклический сдвиг операнда влево через CF. Сдвиг всех битов приёмника (регистр или переменная) влево, при этом старший бит приёмника становится значением CF, а старое значение CF вдвигается в приёмник справа и становится значением младшего бита. В качестве счётчика может использоваться регистр CL или непосредственное значение. Счётчик может принимать значения от 0 до 31. Аналогично rcr (циклический сдвиг вправо с переносом).

rol приёмник, счётчик – циклический сдвиг операнда влево через CF. Сдвиг всех битов операнда влево на один разряд, при этом старший бит операнда вдвигается в операнд справа и становится значением младшего бита операнда. Одновременно выдвигаемый бит становится значением флага переноса cf. Указанные выше два действия повторяются количество раз, равное значению второго операнда. Аналогично ror (циклический сдвиг вправо).

В разработке программы курсовой работы была использована одна команда логического сдвига вправо shr.

shr [bufer1], 2

Соседние файлы в папке docx56