→ Пошук по сайту       Увійти / Зареєструватися

Команди асемблера для 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

Допустіме вікорістання 32-бітовіх операндів і додатковіх режімів адресації 32-розрядніх процесорів.

Приклад

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-розрядніх застосувань відносна адреси табліці розміщується в розширеному регістрі ЕВХ.
Команда xlat може маті як операнд відносну адресі табліці трансляції; у цьому віпадку пріміщення адреси табліці в регістр ЕВХ не потрібне. Дія команді від цього не змінюється, проте можліва заміна сегменту.

Приклад

;У сегменті, що адресується через сегментній регістр 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

   Допустіме вікорістання 32-бітовьгх операндів і додатковіх режімів адресації 32-розрядніх процесорів.

Приклад

mov Eax,4444aaaah
xor Eax,4441aaach ;EAX=00050006h

 

загрузка...
Сторінки, близькі за змістом