Какой ассемблер вы используете и на какой процессор нацеливаетесь?
Если вы используете MASM, вы можете добавить смещение в регистр, например:
mov eax, ebp - 12
mov ecx, ebp - 8
mov ebp - 12, ecx
mov ebp - 8, eax
В качестве альтернативы вы можете использовать инструкцию xchg и сделать это в 3 строки:
mov eax, ebp - 12
xchg ebp - 8, eax
xchg ebp - 12, eax
Это кажется таким простым, что, может быть, я что-то упустил?