Как стать программистом Как устроен компьютер. Что такое программа. Как написать свою программу. И многое другое узнаете вы из этой книги. Получить бесплатно! |
Команда XCHG
Лучшие книги по Ассемблеру
Сделал подборку не новых, но проверенных книг по программированию на языке ассемблера. Если вы также как и я любите погружаться на низкий уровень, в те закоулки мира программирования, куда не всем путь открыт, то посмотрите. Возможно, что-то вам понравится. Подробнее... |
Команда XCHG в Ассемблере выполняет перестановку операндов (то есть меняет местами значения операндов). Синтаксис:
XCHG ОПЕРАНД1, ОПЕРАНД2
После выполнения команды значение из ОПЕРАНД1
будет помещено в
ОПЕРАНД2
, а из ОПЕРАНД2
- в ОПЕРАНД1
.
ОПЕРАНД1 может быть один из следующих:
- Регистр общего назначения (REG)
- Область памяти (MEM)
ОПЕРАНД2 может быть один из следующих:
- Регистр общего назначения (REG)
- Область памяти (MEM)
С учётом ограничений, которые были описаны выше, комбинации ОПЕРАНД1-ОПЕРАНД2 могут быть следующими:
REG, MEM MEM, REG REG, REG
После выполнения команды никакие флаги не изменяются.
Пример на ассемблере:
.model tiny .code ORG 100h start: MOV AL, 1 MOV AH, 2 XCHG AL, AH ;Теперь AL=2, AH=1 XCHG AL, AH ;Теперь AL=1, AH=2 RET ;Выйти из программы END start
Это, пожалуй, одна одна из немногих команд, которая опровергает утверждение о сложности ассемблера и о том, что исходные тексты на языке высокого уровня всегда занимают меньше места, чем на языке Ассемблера. Пример на Lazarus (Free Pascal):
program xchg; {$ASMMODE INTEL} //!!!Использовать эту директиву var A : byte = 1; B : byte = 2; C : byte; begin //Меняем местами значения A и B на Паскале C := A; //C = 1 A := B; //A = 2 B := C; //B = 1 //Меняем местами значения A и B на Ассемблере asm MOV AX, B MOV BX, AX MOV AX, A XCHG AX, BX //A = 1, B = 2 MOV A, AX MOV AX, BX MOV B, AX end; WriteLn('A = ', A, ', B = ', B); ReadLn; end.
Как видите, вместо ТРЁХ инструкций на Паскале мы используем всего ОДНУ инструкцию на Ассемблере.
На остальные инструкции не обращайте внимания - это связано с особенностями использования Ассемблера в определённых языках и средствах разработки (кое что про это можно найти здесь).
Напоследок, как всегда, о происхождении аббревиатуры XCHG.
XCHG - это своеобразное сокращение слова eXCHanGe (замена).
Подписаться на Дзен-канал
Вступить в группу "Основы программирования" Подписаться на рассылки по программированию |
Первые шаги в программирование
Главный вопрос начинающего программиста – с чего начать? Вроде бы есть желание, но иногда «не знаешь, как начать думать, чтобы до такого додуматься». У человека, который никогда не имел дело с информационными технологиями, даже простые вопросы могут вызвать большие трудности и отнять много времени на решение. Подробнее... |