Win32asm обучение


    d8ef8794     

значение dword, где dx представляет


* = Например: если 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

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

    Содержание  Назад  Вперед