Иллюстрированный самоучитель по Assembler


MUL Умножение целых чисел без знака - часть 2


Пример 2


; В полях данных

nmbs db 15,22,36,78,84,98,100

;В программном сегменте

mov EDX,offset nmbs ;Относительный адрес

movzx EDX,DX ;массива

mov ECX,5 ;Смещение в массиве

mov AL,10 ;Множитель

mul byte ptr [EDX] [ЕСХ] ;Умножаем элемент

;массива с индексом 5 (98)

;на AL (10) Результат в

;АХ=980

NEG Изменение знака, дополнение до 2


Команда neg выполняет вычитание целочисленного операнда со знаком из нуля, превращая положительное число в отрицательное и наоборот. Исходный операнд затирается. В качестве операнда можно указывать регистр (кроме сегментного) или ячейку памяти размером как в байт, так и в слово. Не допускается использовать в качестве операнда непосредственное значение. Команда воздействует на флаги OF, SF, ZF, AF, PF и CF.

Пример 1


mov АХ,0 0 01

neg AX ;AX=FFFFh=-1

Пример 2


mov BX,-2 ;BX=FFFEh=-2

neg BX ;BX=0002h

Пример 3


;В полях данных

nmb dw 800lh ;Если число со знаком,

;то -32767

;В программном сегменте

neg nmb ;nmb=7FFFh=+32767

Допустимо использование 32-битовых операндов и дополнительных режимов адресации 32-разрядных процессоров.

Пример


mov ECX, 5

neg ECX ;ECX=FFFFFFFBh=-5

NOP Холостая команда


По команде пор процессор не выполняет никаких действий, кроме увеличения на 1 содержимого указателя команд IP (поскольку команда пор занимает 1 байт). Команда иногда используется в отладочных целях, чтобы "забить" какие-то ненужные команды, не изменяя длину загрузочного модуля или, наоборот, оставить место в загрузочном модуле для последующей вставки команд. В ряде случаев команды пор включаются в текст объектного модуля транслятором. Команда не имеет ни параметров, ни операндов и не воздействует на флаги процессора.

NOT Инверсия, дополнение до 1, логическое отрицание


Команда not выполняет инверсию битов указанного операнда, заменяя 0 на 1 и наоборот. В качестве операнда можно указывать регистр (кроме сегментного) или ячейку памяти размером как в байт, так и в слово. Не допускается использовать в качестве операнда непосредственное значение. Команда не воздействует на флаги процессора.




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