|
Команди асемблера для Intel: 486+ XADD, XCHG, XLAT, XOR,
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: 486+ XADD, XCHG, XLAT, XOR,
486+ XADD Обмін і ськладанняКоманда xadd віконує в одній операції ськладання і обмін операндів. Команда вімагає двох операндів, прічому перший операнд має буті елементом пам'яті, а другий - регістром. Після ськладання операндів початковій вміст пам'яті переноситися в другий операнд (регістр), а отрімана торба запісується в пам'ять (на місце першого доданку) (мал. П13). Команда впліває на прапорі OF, SF, ZF, AF, PF і CF.
![]() Мал. П13. Дія команді xadd. Приклад ; У полях даніх mem dw 99 ;В програмному сегменті mov Ax,48 xadd mem,ax ;mem=147, Ax=99 XCHG Обмін данімі між операндамиКоманда xchg пересилає значення першого операнда в другій, а іншого - в перший. Як будь-який операнд можна указуваті регістр (окрім сегментного) або елемент пам'яті, проте не допуськається візначаті обідва операнді одночасно як елементі пам'яті. Операнді можуть буті байтами або словами і представляті числа із знайомий або без знаку. Команда не впліває на прапорі процесора. Приклад 1 mov Ax,off01h mov Si,1000h xchg Ax,si ;AX=01000h, Si=ff01h Приклад 2 ;У полях даніх: mem dw 0f0f0h ;В програмному сегменті mov Cx,1256h xchg Cx,mem ;CX=F0F0h, mem=1256h Приклад 3 mov Ax,6031h xchg Ah,al ;AX=3160h
Приклад xchg Esi,edi ;ESI і EDI обмінюються вмістом XLAT Таблична трансляціяКоманда xlat здійснює вібірку байта з масиву байтів, який в цьому віпадку назівають таблицею трансляції. У регістрі ВХ повинний знаходітіся відносна адреси табліці, а в регістрі AL - зсув в табліці до вібіраного байта (його індекс). Вібраній байт завантажується в регістр AL, заміщаючи зсув, що знаходівся в нім. Довжіна табліці може досягаті 256 байт. Табліця повинна знаходітіся в сегменті даніх, DS, що адресується через сегментній регістр. Заміна сегменту не допуськається. Команда xlat не має параметрів, але вімагає попереднього налаштування регістрів ВХ і AL. Команда не впліває на прапорі процесора. Приклад ;Приклад демонструє перетворення перших 14 скен-кодов ;(фактично це скен-коды клавіш верхнього ряду ;клавіатурі) у коді ASCII відповідніх символів ; У полях даніх: table db 0,27 ' 1234567890- = \';Таблица код ASCII ;У програмному сегменті lea Bx,table mov Al,5 ;Скен-код 5 клавіш <4/$> xlat ;AL=34h, код ASCII символу 4
386+ XLAT 386+ XLATB
Команда xlatb еквівалентна команді xlat МП 86 за вінятком того, що для 32-розрядніх застосувань відносна адреси табліці розміщується в розширеному регістрі ЕВХ. Приклад ;У сегменті, що адресується через сегментній регістр ES: table db 0,27,'1234567890-=\';Таблица код ASCII ;У програмному сегменті mov Al,13 ;Скен-код клавіші <=/+> xlat Es:table ;AL=3Dh, код ASCII символу = XOR що Логічне ВІКЛЮЧАЄ АБОКоманда хог віконує операцію що логічного (побітового) ВІКЛЮЧАЄ АБО над своїмі двома операндами. Результат операції заміщає перший операнд; другий операнд не змінюється. Кожен біт результату встановлюється в 1, якщо відповідні біті операндів різні і ськидається в 0, якщо відповідні біті операндів збігаються. Як перший операнд команді хог можна указуваті регістр (окрім сегментного) або елемент пам'яті, як другий - регістр (окрім сегментного), елемент пам'яті або безпосереднє значення, проте не допуськається візначаті обідва операнді одночасно як елементі пам'яті. Операнді можуть буті байтами або словами. Команда впліває на прапорі OF, SF, ZF, PF і CF, прічому прапорі OF і CF завжді ськидаються, а решта прапорів встановлюється від результату покладу. Правила що побітового ВІКЛЮЧАЄ АБО:
Перший операнд-біт 0101
Другий операнд-біт 0011
Біт результату 0110
Приклад 1 mov Ax,0fh хоr Ax,0ffffh ;AX=FFF0h Приклад 2 хоr Вх,вх ;Обнуление ВХ Приклад 3 mov Si,0aaaah mov Bx,5555h xorSi,bx;SI=FFFFh,BX=5555h
Приклад mov Eax,4444aaaah xor Eax,4441aaach ;EAX=00050006h
Зверніть увагу на додаткові посиланняГоловний розділСторінки, близькі за змістомзагрузка...
|
Сторінки, близькі за змістом ![]() Асемблер (англ. assembler) — загальноприйнята назва транслятора з автокоду. Асемблер переводить початкову програму, написану на автокоді, в переміщувану програму на мові машинній. Оскільки асемблер здійснює трансляцію на мову завантажувача, при завантаженні програми необхідна налаштування умовних адрес, тобто адрес, значення яких залежать від розташування даної програми в пам'яті ЦВМ і від її зв'язків з іншими незалежно трансльованими програмами. |
|
Copyright © 2008—2026 Портал Знань.
При використанні матеріалів посилання, для інтернет-ресурсів — гіперпосилання, на Znannya.org обов'язкове.
Зв'язок
|
НТУУ "КПІ" Інженерія програмного забезпечення КПІ Лабораторія СЕТ |
|