- •Лекции 17 -
- •Структура машинной
- •Структура машинной команды
- •Структура машинной команды
- •Структура машинной команды
- •Структура машинной команды
- •Сочетания операндов
- •Система команд
- •Система команд
- •Команды пересылки
- •Команды пересылки данных
- •Команды пересылки данных
- •Команды пересылки данных
- •Команды пересылки данных
- •Команды пересылки данных
- •Команды пересылки
- •Команды пересылки
- •Команды пересылки данных
- •Команды пересылки данных
- •Команды пересылки
- •Команды пересылки данных
- •Команды пересылки данных
- •Прочие команды
- •Прочие команды
- •Прочие команды
- •Команды загрузки сегментных регистров
- •Команды ввода – вывода
- •Команды ввода – вывода
- •Команды ввода – вывода
- •Команды ввода – вывода
- •Команды обработки строк
- •Команды обработки строк
- •Команды обработки строк
- •Команды обработки строк
- •Команды обработки строк
- •Команды обработки строк
- •Арифметические команды
- •Арифметические команды
- •Арифметические команды
- •Арифметические команды
- •Арифметические команды
- •Арифметические команды
- •Арифметические команды
- •Арифметические команды
- •Арифметические команды
- •Арифметические команды
- •Логические команды
- •Логические команды
- •Логические команды
- •Логические команды
- •Логические команды
- •Команды сдвигов
- •Команды сдвигов
- •Команды сдвигов
- •Команды сдвигов
- •Команды сдвигов
- •Команды сдвигов
- •Команды сдвигов
- •Команды сдвигов
- •Команды сдвигов
- •Команды обработки бит
- •Команды обработки бит
- •Команды обработки бит
- •Команды обработки бит
- •Команды обработки бит
- •Команды обработки бит
- •Команды работы с регистром флагов
- •Команды передачи управления
- •Команды передачи управления
- •Команды передачи управления
- •Команды передачи управления
- •Команды передачи управления
- •Команды передачи
- •Команды передачи управления
- •Команды передачи управления
- •Команды передачи управления
- •Команды передачи управления
- •Пример 1
- •Пример 1
- •Пример 1
- •Пример 1
- •Пример 2
- •Пример 2
- •Пример 2
- •Пример 2
- •Пример 2
- •Пример 2
- •Пример 3
- •Пример 3
- •Пример 3
- •Пример 3
- •Пример 3
- •Пример 3
Логические команды
Команда тестирования бит:
TEST назначение, источник
Назначение: РОН, память.
Источник: РОН, память, непосредственное значение Операнды не могут быть одновременно ячейкой памяти.
Команда выполняет побитовую операцию AND над назначением и источником и устанавливает флаги SF, ZF и PF в зависимости от результата. Флаги CF и OF устанавливаются в 0.
Примеры:
test |
ax, bx |
test |
al, 10010011b |
test |
edx, es:[edi] |
|
|
Команды сдвигов
Арифметический сдвиг вправо:
SAR назначение, счетчик
Назначение: РОН или память
Счетчик: CL или непосредственное значение (накладывается 5-и битовая маска).
Сдвигаемый бит помещается в CF, старший разряд устанавливается в соответствии со знаком.
На флаг OF влияет только сдвиг на 1. Для этой инструкции флаг OF сбрасывается.
Примеры:
sar |
ax, 5 |
sar |
edx, cl |
|
|
Команды сдвигов
Логический сдвиг вправо:
SHR назначение, счетчик
Назначение: РОН или память
Счетчик: CL или непосредственное значение (накладывается 5-и битовая маска).
Сдвигаемый бит помещается в CF, старший разряд устанавливается в ноль.
На флаг OF влияет только сдвиг на 1. Для этой инструкции флаг OF устанавливается в значение старшего разряда исходного значения операнда.
Примеры:
shr |
ax, 5 |
shr |
edx, cl |
|
|
Команды сдвигов
Арифметический сдвиг влево:
SAL назначение, счетчик Логический сдвиг влево:
SHL назначение, счетчик
Назначение: РОН или память
Счетчик: CL или непосредственное значение (накладывается 5-и битовая маска).
Сдвигаемый бит помещается в CF, младший бит заполняется нулем.
На флаг OF влияет только сдвиг на 1. Для этой инструкции флаг OF устанавливается в ноль, если оба старших бита равны. В противном случае – устанавливается в единицу.
Примеры:
sal |
ax, 5 |
shl |
edx, cl |
|
|
Команды сдвигов
Циклический сдвиг вправо:
ROR назначение, счетчик
Назначением может быть РОН или ячейка памяти. Счетчик – CL или непосредственное значение.
При сдвиге младший бит становится новым значением старшего бита, это значение также записывается в CF.
На флаг OF оказывают влияние только сдвиги на 1.
Пример:
ror |
eax, 4 |
ror |
es:[edi], 2 |
|
|
Команды сдвигов
Циклический сдвиг вправо через перенос: RCR назначение, счетчик
Назначением может быть РОН или ячейка памяти. Счетчик – CL или непосредственное значение.
При сдвиге младший бит заносится в CF, а значение CF – в старший бит назначения.
На флаг OF оказывают влияние только сдвиги на 1.
Пример:
rcr |
eax, 4 |
rcr |
es:[edi], 2 |
|
|
Команды сдвигов
Циклический сдвиг влево:
ROL назначение, счетчик
Назначением может быть РОН или ячейка памяти. Счетчик – CL или непосредственное значение.
При сдвиге старший бит становится новым значением младшего бита, это значение также записывается в CF.
На флаг OF оказывают влияние только сдвиги на 1.
Пример:
rol |
edx, 3 |
rol |
ds:[ebx], cl |
|
|
Команды сдвигов
Циклический сдвиг влево через перенос: RCL назначение, счетчик
Назначением может быть РОН или ячейка памяти. Счетчик – CL или непосредственное значение.
При сдвиге старший бит заносится в CF, а значение CF – в младший бит назначения.
На флаг OF оказывают влияние только сдвиги на 1.
Пример:
rcl |
ebx, 2 |
rcl |
es:[edi], 4 |
|
|
Команды сдвигов
Двойной сдвиг вправо:
SHRD назначение, источник, счетчик
Назначение – РОН или память, Источник – РОН,
Счетчик – CL или непосредственное значение.
Выполняет вправо сдвиг назначения на определенное число бит. Старшие разряды назначения заполняются младшими разрядами источника
Флаг CF заполняется значением последнего выдвинутого бита назначения. Влияние на флаг OF оказывает только сдвиг на 1.
Пример: |
|
|
|
shrd |
eax, ecx, 4 |
|
shrd |
es:[edi], edx, cl |
|
|
|
Команды сдвигов
Двойной сдвиг влево:
SHLD назначение, источник, счетчик
Назначение – РОН или память, Источник – РОН,
Счетчик – CL или непосредственное значение.
Выполняет сдвиг влево назначения на определенное число бит. Младшие разряды назначения заполняются старшими разрядами источника
Флаг CF заполняется значением последнего выдвинутого бита назначения. Влияние на флаг OF оказывает только сдвиг на 1.
Пример: |
|
|
|
shld |
eax, ecx, 4 |
|
shld |
es:[edi], edx, cl |
|
|
|