Win32asm обучение

Профессиональный электрик, отделочник в Новосибирске и пригороде. Электромонтажные работы.

Урок 5 - Коды операции - часть 5


00000000000000001111111111111111 , в шестнадцатиричном это 0000FFFF

Значит после операции NOT, ecx будет содержать 0000FFFFh.

УВЕЛИЧЕНИЕ/УМЕНЬШЕНИЕ

Есть 2 очень простые команды, DEC и INC. Эти команды увеличивают или уменьшают содержимое памяти или регистра на единицу. Просто поместите:

inc регистр -> регистр = регистр + 1

dec регистр -> регистр = регистр - 1

inc dword ptr [103405] -> значение в [103405] будет увеличено на 1.

dec dword ptr [103405] -> значение в [103405] будет уменьшено на 1.

NOP

Эта команда не делает абсолютно ничего (пустая команда). Она только занимает пространство и время. Используется для резервирования места в сегменте кода или организации программной задержки

Биты, сдвиг логический, арифметический и циклический

Обратите внимание: Большинство примеров ниже использует 8 битные числа, это сделано для того, чтобы вам было легче понять, как это работает.

Функции сдвига (сдвиг логический операнда влево/вправо)

SHL операнд, количество_сдвигов

SHR операнд, количество_сдвигов

SHL и SHR сдвигают биты операнда (регистр/память) влево или вправо соответственно на один разряд.

Указанное выше действие повторяется количество раз, равное значению второго операнда.

Пример:

; al = 01011011 (двоичное)

shr al, 3

Это означает: сдвиг всех битов регистра al на 3 разряда вправо. Так что al станет 00001011. Биты слева заполняются нулями, а биты справа выдвигаются. Последний выдвинутый бит, становится значением флага переноса cf.
Бит переноса это бит флагового регистра процессора. Этот регистр не такой как eax или ecx, к которому вы можете непосредственно обращаться (хотя есть опкоды, которые это делают), его содержание, зависит от результатов многих команд. Об этом я вам расскажу позже, единственное, что вы должны сейчас запомнить, это то, что флаг переноса это бит во флаговом регистре и что он может быть установлен (т.е. равен 1) или сброшен (равен 0).

Команда shl такая же, как и shr, но сдвигает влево.

; bl = 11100101 (двоичное)



- Начало -  - Назад -  - Вперед -



Книжный магазин