Одной из задач может быть поменять местами значения в регистрах. Решить эту задачу можно используя операторы MOV и дополнительную ячейку памяти, вот так:
mov ax,20 mov cx,30 mov bx,ax mov ax,cx mov cx,bx
Получается, что нам нужно три команды. Команда XCHG позволяет произвести обмен одной командой. Обмен может производится между регистрами или регистрами и памятью. Давайте посмотрим пример:
MODEL SMALL STACK 256 DATASEG stroca DB 'hello programm' CODESEG Start: mov ax,@data ; установка в ds адреса mov ds,ax ; сегмента данных mov es,ax ; установка es=ds mov ax,20 mov cx,30 XCHG ax,cx ; поменять местами Exit: mov ah,04Ch ; функция DOS выхода из программы mov al,0h ; код возврата int 21h ; Вызов DOS остановка программы End Start
А теперь что будет происходить в отладчике. До замены:
И после замены:
Наличие этой команды процессора очень удобно, так как позволяет оптимизировать операции связанные с необходимостью большого числа замен. Например, при сортировке. Реально уменьшается и размер программы.