Win32asm обучение

Самая свежая информация леди баг игрушка на сайте. Электрик сделает проведение электропроводки дома в Новокузнецке и пригороде. Русский электрик.

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


/p>

* = Например: если dx = 2030h, а ax = 0040h, dx: ax = 20300040h. Dx:ax - значение dword, где dx представляет старшее word, а ax - младшее. Edx:eax - значение quadword (64 бита), где старшее dword в edx и младшее в eax.

Источник операции деления (div) может быть:

  • 8-бит регистр (al, ah, cl,...)
  • 16-бит регистр (ax, dx, ...)
  • 32-бит регистр (eax, edx, ecx...)
  • 8-бит значение из памяти (byte ptr [xxxx])
  • 16-бит значение из памяти (word ptr [xxxx])
  • a 32-бит значение памяти (dword ptr [xxxx])

Источник не может быть непосредственным значением, потому что тогда процессор не сможет определить размер исходного операнда.

ОПЕРАЦИИ С БИТАМИ

Эти команды работают с приемником и источником, исключение команда 'NOT'. Каждый бит в приемнике сравнивается с тем же самым битом в источнике, и в зависимости от команды, 0 или 1 помещается в бит приемника:

команда AND OR XOR NOT
Бит источника 0 0 1 1 0 0 1 1 0 0 1 1 0 1
Бит приемника 0 1 0 1 0 1 0 1 0 1 0 1 X X
Бит результата 0 0 0 1 0 1 1 1 0 1 1 0 1 0

AND устанавливает бит результата в 1, если оба бита, бит источника и бит приемника установлены в 1.

OR устанавливает бит результата в 1, если один из битов, бит источника или бит приемника установлен в 1.

XOR устанавливает бит результата в 1, если бит источника отличается от бита приемника.

NOT инвертирует бит источника.

Пример:

mov ax, 3406

mov dx, 13EAh

xor ax, dx

ax = 3406 (десятичное), в двоичном - 0000110101001110.

dx = 13EA (шестнадцатиричное), в двоичном - 0001001111101010.

Выполнение операции XOR на этими битами:

Источник 0001001111101010 (dx)
Приемник 0000110101001110 (ax)
Результат 0001111010100101 (новое значение в ax)

Новое значение в ax, после выполнения команды - 0001111010100101 (7845 - в десятичном, 1EA5 - в шестнадцатиричном).

Другой пример:

mov ecx, FFFF0000h

not ecx

FFFF0000 в двоичном это - 11111111111111110000000000000000

Если вы выполните инверсию каждого бита, то получите:



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



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