Как работает команда xchg? - Assembler
Формулировка задачи:
для обмена двух чисел используется команда xchg.
в отладчике эта программа точно так же выглядит, как в листинге. ничего не прибавляется и ничего не убавляется.
меня интересует такой вопрос Как вообще такое возможно что с помощью только одной команды значения регистров меняются местами? если можно, то объясните на пальцах.
допустим, в eax будет 2, а в ebx 3. но ведь одной команды недостаточно для их обмена. должно же быть еще что-то.
может быть xchg как-то скрытно вызывает функцию для обмена и этого не видно при отладке?
mov eax, 2 mov ebx, 3 xchg eax, ebx
Решение задачи: «Как работает команда xchg?»
textual
Листинг программы
PUSH EAX MOV EAX,EBX POP EBX
Объяснение кода листинга программы
- PUSH EAX — отправляет текущее значение регистра EAX на стек.
- MOV EAX,EBX — копирует значение регистра EBX в EAX.
- POP EBX — забирает значение из стека и сохраняет его в регистре EBX.