Програмування на мові Асемблер
Перестановка даних ( команда xchg)
Команда xchg -міняє місцями значення двох регістрів або значення регістра з байтом або словом , яке зберігається в пам’ яті .
Приклад
Нехай , ми хочемо переставити значення в регістрах dx i ax. Використовуючи xchg , можна
записати :
xchg ax , dx ; ax dx ; dx ax
( порядок операндів не грає ролі )
Інакше , для перестановки двох 16 - бітових регістрів , можна використати менш ефективний метод який використовує стек як поміжкове місце збереження одного з значень.
push ax ; стек ax
mov ax,dx , ax dx
pop dx ; dx ( стек початкове значення ax ).
Приклад
Для перестановки двох 8 - бітових значень необхідний третій регістр , так як в стек можна проштовхувати , виштовхувати тільки 16 - бітні слова .
Щоб переставити два байти в al i ah, не використовучи xchg потрібно записати:
mov bh, ah ; bh ah
mov ah, al ; ah al
mov al, bh ; al bh
При використанні xchg цього не потрібно .
Приклад
Крім перестановки значень регістрв , xchg також може міняти місцями значення врегістрі
з значенням , яке зберігається :
1) xchg ax,[ things ] ; ax [ things ]
2) xchg [ oldCount ],cx ; cx [ oldCount ]
Команди для роботи з рядкамиКоманди для роботи з рядками можуть служити для обробки всіх типів даних, а не тільки символьних рядків. В Асемблері рядки є послідовностями байтів, які можуть або представляти, або не представляти ASCII-символи. Рядкові команди діляться на три групи: