Команди асемблера для Intel: MUL, NEG, NOP, NOT, OR, OUT
ADO в Delphi AJAX Android C++ CakePHP CMS COM CSS Delphi Flash Flex HTML Internet Java JavaScript MySQL PHP RIA SCORM Silverlight SQL UML XML Бази даних Веб-розробка Генетичні алгоритми ГІС Гітара Дизайн Економіка Інтелектуальні СДН Колір Масаж Математика Медицина Музика Нечітка логіка ООП Патерни Подання знань Розкрутка сайту, SEO САПР Сесії в PHP Системне програмування Системний аналіз Тестологія Тестування ПЗ Фреймворки Штучний інтелект
|
Команди асемблера для Intel: MUL, NEG, NOP, NOT, OR, OUT
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
Приклад 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 ;Вывод у порт подвійного слова Зверніть увагу на додаткові посиланняГоловний розділСторінки, близькі за змістомзагрузка...
|
Сторінки, близькі за змістом Асемблер (англ. assembler) — загальноприйнята назва транслятора з автокоду. Асемблер переводить початкову програму, написану на автокоді, в переміщувану програму на мові машинній. Оскільки асемблер здійснює трансляцію на мову завантажувача, при завантаженні програми необхідна налаштування умовних адрес, тобто адрес, значення яких залежать від розташування даної програми в пам'яті ЦВМ і від її зв'язків з іншими незалежно трансльованими програмами. |
Copyright © 2008—2024 Портал Знань.
При використанні матеріалів посилання, для інтернет-ресурсів — гіперпосилання, на Znannya.org обов'язкове.
Зв'язок
|
НТУУ "КПІ" Інженерія програмного забезпечення КПІ Лабораторія СЕТ |
|