Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2 курс / Лекции / Лекция 17 - 18 - Система команд IA-32.ppt
Скачиваний:
47
Добавлен:
18.02.2023
Размер:
612.35 Кб
Скачать

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

Команда тестирования бит:

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