Шаг 33 - Обмен значений команда XCHG

Одной из задач может быть поменять местами значения в регистрах. Решить эту задачу можно используя операторы 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

А теперь что будет происходить в отладчике. До замены:

33_1.gif (4164 b)

И после замены:

33_2.gif (4994 b)

Наличие этой команды процессора очень удобно, так как позволяет оптимизировать операции связанные с необходимостью большого числа замен. Например, при сортировке. Реально уменьшается и размер программы.


Загрузить проект | Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 31.12.2001