Содержание:
- Глава 1 - предисловие и материалы для скачивания
- Глава 2 - предварительные сведения перед изучением ассемблера
- Глава 3 - архитектура процессора 8086
- Глава 4 - сегментация, стэк, прерывания, адресация
- Глава 5 - ассемблер (директивы и операторы)
- Глава 6 - ассемблер (выражения, приоритеты и ссылки вперёд)
- Глава 7 - Загрузка и выполнение программ в DOS, структура EXE и COM программ
- Глава 8 - команды процессора: пересылка данных, стэк, ввод/вывод
- Глава 9 - арифметические команды процессора
- Глава 10 - команды операций сдвигов в Ассемблере
- Глава 11 - команды сравнения и передачи управления в Ассемблере
- Глава 12 - подпрограммы и прерывания в Ассемблере
- Глава 13 - строковые команды в Ассемблере
- Глава 14 - управление процессором
- Глава 15 - практика:EXE и COM программы, вывод на экран
- Глава 16 - практика: циклы и ввод с клавиатуры
- Глава 17 - практика: ввод чисел и системы счисления
- Глава 18 - практика: работа с файлами, перехват и восстановление прерываний
- Глава 19 - практика: дополнительные сведения
- Глава 20 - программирование для Windows
ВНИМАНИЕ! Данный самоучитель был написан много лет назад и его автор не сможет ответить на ваши вопросы. Курс по assembler предназначен для саморазвития. Если у вас хватает квалификации, можете предложить внести правки.
Команды сдвига перемещает все биты в поле данных либо вправо, либо влево, работая либо с байтами, либо со словами. Каждая команда содержит два операнда: первый операнд – поле данных – может быть либо регистром, либо ячейкой памяти; второй операнд – счетчик сдвигов. Его значение может быть равным 1, или быть произвольным. В последнем случае это значение необходимо занести в регистр CL, который указывается в команде сдвига. Число в CL может быть в пределах 0-255, но его практически имеющие смысл значения лежат в пределах 0-16 (0-31).
Общая черта всех команд сдвига – установка флага переноса. Бит, попадающий за пределы операнда, сохраняется во флаге переноса. Всего существует 8 команд сдвига: 4 команды обычного сдвига и 4 команды циклического сдвига. Команды циклического сдвига переносят появляющийся в конце операнда бит в другой конец, а в случае обычного сдвига этот бит пропадает. Значение, вдвигаемое в операнд, зависит от типа сдвига. При логическом сдвиге вдвигаемый бит всегда 0, арифметический сдвиг выбирает вдвигаемый бит таким образом, чтобы сохранить знак операнда. Команды циклического сдвига с переносом и без него отличаются трактовкой флага переноса. Первые рассматривают его как дополнительный 9-ый или 17-ый бит в операции сдвига, а вторые нет.
Ниже приведен перечень команд сдвига:
- команды логического сдвига вправо SHR и влево SHL;
- команды арифметического сдвига вправо SAR и влево SAL;
- команды циклического сдвига вправо ROR и влево ROL;
- команды циклического сдвига вправо RCR и влево RCL с переносом;
Действие команд сдвига иллюстрируют следующие рисунки.
Примеры использования команд сдвига:
SHL CH,1
SHL [BP],CL
RCL Size,1