Команды Операций Сдвига
| Операция | Описание | Команда Intel 8080 | Команда Motorola 6800 |
|---|---|---|---|
| Арифметический сдвиг вправо | Сдвигает биты вправо, сохраняя знак числа | - | ASR |
| Логический сдвиг влево | Сдвигает биты влево, вводя ноль справа | - | ASL |
| Логический сдвиг вправо | Сдвигает биты вправо, вводя ноль слева | - | LSR |
| Циклический сдвиг влево | Сдвигает биты влево, перенося старший бит в младший | RLC | - |
| Циклический сдвиг вправо | Сдвигает биты вправо, перенося младший бит в старший | RRC | - |
| Циклический сдвиг влево с переносом | Сдвигает биты влево, включая бит переноса | RAL | ROL |
| Циклический сдвиг вправо с переносом | Сдвигает биты вправо, включая бит переноса | RAR | ROR |
| Прочие | Двойной сдвиг для работы с 16-битными числами | DAD H | - |
Примеры использования команд
- Intel 8080 - RAL (Циклический Сдвиг Влево С Переносом)
- Пример: Если аккумулятор содержит
10101010и флаг переноса установлен (1), команда RAL преобразует аккумулятор в01010101, а старший бит1переместится в флаг переноса.
- Motorola 6800 - ASR (Арифметический Сдвиг Вправо)
- Пример: Если аккумулятор содержит
10101010, команда ASR преобразует его в11010101. Это сохраняет знак числа (старший бит).
- Motorola 6800 - LSR (Логический Сдвиг Вправо)
- Пример: Если аккумулятор содержит
10101010, команда LSR преобразует его в01010101. Старший бит заменяется на0.
Эти операции сдвига важны для манипуляций с битами, арифметических вычислений и эффективного использования памяти в программировании микропроцессоров.