 |
::
Меню :: |
 |
|
|
 |
::
Друзі :: |
 |
|
|
 |
::
Лічильники :: |
 |
|
|
|
MUL Множення цілих чисел без знаку
Команда
inul виконує множення цілого числа без знаку, що знаходиться в регістрі
AL (у разі множення на байт) або АХ (у разі множення на слово), на операнд-джерело
(ціле число без знаку). Розмір твору в два рази більше розміру співмножників.
Для однобайтових операцій один із співмножників поміщається в регістр AL; після
виконання операції твір записується в регістр АХ.
Для двобайтових операцій один із співмножників поміщається в регістр АХ; після
виконання операції твір записується в регістри Dx:ax (у DX - старша
частина, в АХ - молодша). Попередній вміст регістра DX затирається.
Якщо вміст регістра АН після однобайтового множення або
вміст регістра DX після двобайтового множення не рівні 0, прапори CF і OF
встановлюються в 1. Інакше обидва прапори скидаються в 0.
Як операнд-співмножник команди mul можна указувати регістр (окрім сегментного)
або елемент пам'яті; не допускається множення на безпосереднє значення. Команда
впливає на прапори OF і CF.
Приклад 1
mov Al,5 ;Первый співмножник
mov Bl,3 ;Второй співмножник
mul BL ;AX=000Fh, твір
Приклад 2
mov Ax,256 ;Первый співмножник
mov Bx,256 ;Второй співмножник
mul BX ;DX=0001h, Ax=0000h
;(Dx:ax=65536, твір)
Приклад 3
;У
полях даних
coef db 100 ;Первый співмножник
datal db 126 ;Второй співмножник
mov Al,datal;AL=7Eh=126
mul coef;AX=3138h=12600,произведение
Приклад 4
;B
полях даних
coef dw 5000 ;Первый співмножник
datal dw 1200 ;Второй співмножник
mov Ax,datal;AX=4BOh=1200
mul coef ;DX=005Bh, Ax=8d80h
;Проїзведеніє=вх:ax=
;5B8D80h=6000000
Допустиме
використання 32-бітових операндів і додаткових режимів адресації 32-розрядних
процесорів. При цьому, якщо вказаний операнд є 32-байтовою величиною, то
результат розміщується в регістрах Edx:eax.
Приклад 1
mov Eax,200h ;Первый співмножник
mov Esi,l000000lh ;Второй співмножник
mul ESI ;Произведение у Edx:eax
;Edx=00000020h,eax=00000200h
Приклад 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
і навпаки. Як операнд можна указувати регістр (окрім сегментного) або елемент
пам'яті розміром як в байт, так і в слово. Не допускається використовувати як операнд
безпосереднє значення. Команда не впливає на прапори процесора.
Правила побітової інверсії:
Операнд-біт 0 1
Біт результату 1 0
Приклад 1
mov
Ax,0ffffh
not AX ;AX=0000h
Приклад 2
mov
Si,5551h
not SI ;SI=AAAEh
Допустиме використання
32-бітових операндів і додаткових режимів адресації 32-розрядних процесорів.
Приклад
mov
Eax,0c00sff00h
not EAX ;EAX=3FFC00FFh
OR що Логічне
ВКЛЮЧАЄ АБО
Команда or виконує операцію логічного (побітового) складання
двох операндів. Результат заміщає перший операнд (приймач); другий операнд (джерело)
не змінюється. Як перший операнд можна указувати регістр (окрім сегментного)
або елемент пам'яті, як другий - регістр (окрім сегментного), елемент пам'яті
або безпосереднє значення, проте не допускається визначати обидва операнди
одночасно як елементи пам'яті. Операнди команди or можуть бути байтами або словами.
Команда впливає на прапори OF, SF, ZF, PF і CF, при цьому прапори CF і OF завжди
скидаються в 0.
Правила побітового складання:
Перший операнд-біт 0101 Другий операнд-біт 0011
Біт результату 0111
Приклад 1
mov
Ax,000fh mov Bx,00f0h
or Ax,bx ;AX=00FFh, Bx=00f0h
Приклад 2
mov
Ax,000fh mov Bx,00f7h
or Ax,bx ;AX=00FFh, Bx=00f7h
Приклад 3
mov
Ax,000fh
or Ax,8001h ;AX=800Fh
Приклад 4
; У
полях даних mask db 80h
;B програмному сегменті
mov Ch,17h
or Ch,mask ;CH=97h
Допустиме використання
32-бітових операндів і додаткових режимів адресації 32-розрядних процесорів.
Приклад
;У
полях даних mem dd 80000000h
; У програмному сегменті
or mem,0c0h ;mem=800000C0h
OUT Вивід в
порт
Команда out
виводить в порт, що указується першим операндом, байт або слово відповідно з
регістра AL або АХ. Адреса порту поміщається в регістр DX. Якщо адреса порту не
перевищує 255, він може бути вказаний безпосереднім значенням. Вказівка регістра-джерела
(AL або АХ) обов'язкова, хоча з іншими регістрами команда out
не працює, і їх указувати не можна. Команда не впливає на прапори процесора.
Приклад 1
mov Al,20h ;Команда кінця переривання (EOI)
out 20h,al ;Вывод команди EOI в порт
;20h контроллера переривань
Приклад 2
mov Dx,3ceh ; Адреса порту
mov Al,5 ;Данное
out Dx,al ;Вывод байта з AL в порт 3ceh
Допустиме використання
як операнд-джерело розширеного регістра ЕАХ (якщо пристрій, що адресується,
дозволяє записати в його порт подвійне слово).
Приклад
mov Еах,1а008ррзh;Пересылаемое дане
mov Dx,345h ;Адрес порту
out Dx,eax ;Вывод у порт подвійного слова
-
|
 |
::
Наша кнопка :: |
 |
|
 |
Отримати код:
|
Підтримайте наш сайт і розмістіть нашу
кнопку на своєму ресурсі. |
|
|
 |
::
Популярне :: |
 |
|
|
 |
:: Посилання :: |
 |
|
|
|