Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm для начинающих > Как обменять данные между 2 регистрами?


Автор: froggy82 25.9.2006, 17:45
Собственно вопрос:
Есть два регистра EAX и EBX
как обменять данные между ними не применяя команды push?
Заранее благадарю, очень важно, на носу контрольная. smile 

Автор: Sartorius 25.9.2006, 17:48
XCHG EAX, EBX

Автор: froggy82 25.9.2006, 17:58
Цитата(Sartorius @ 25.9.2006,  17:48)
XCHG EAX, EBX

Нее в том то и дело, препод сказал использовать команды сложения и вычитания

Автор: Sartorius 25.9.2006, 18:17
Код

add ebx
sub ebx, eax
neg ebx
sub ebx

Автор: Akina 25.9.2006, 19:02
Код

xor eax, ebx
xor ebx, eax
xor eax, ebx

МОжно вместо xor использовать sub 

Автор: Sartorius 25.9.2006, 19:43
Цитата(Akina @ 25.9.2006,  20:02)
Код

xor eax, ebx
xor ebx, eax
xor eax, ebx

МОжно вместо xor использовать sub

Код

;                                 [eax]                [ebx]
sub eax, ebx;             [eax - ebx]       [ebx]           
sub ebx, eax              [eax - ebx]       [2ebx - eax]
sub eax, ebx              [-3ebx]             [2ebx - eax]


че-то не получается sub-ами .... или я где - то ошибся?

Автор: Akina 25.9.2006, 23:18
Sartorius, да, насчет sub я погорячился.

Автор: froggy82 28.9.2006, 14:08
А вот вопрос собственно такой пример пройдет,  используя переменную и mov?

mov i, EAX
mov EAX, EBX
mov EBX, i

Автор: PatriotRus 28.9.2006, 17:53
froggy82, тема то пройдёт, но если надо обменяться между регистрами, зачем вообще нужна переменная?

Автор: froggy82 29.9.2006, 13:15
Цитата(PatriotRus @ 28.9.2006,  17:53)
froggy82, тема то пройдёт, но если надо обменяться между регистрами, зачем вообще нужна переменная?

По заданию нельзя использовать другие регистры а только команды mov или арифметические...
Завтра узнаю...

Автор: Akina 29.9.2006, 16:16
froggy82, XOR можно? ну так используй, see above.

Автор: PatriotRus 29.9.2006, 20:35
Посмотрел бы я на того, кто будет обмениваться между 2 регистрами при помощи арифметики!!!! smile  

Автор: froggy82 2.10.2006, 10:46
Цитата(PatriotRus @ 29.9.2006,  20:35)
Посмотрел бы я на того, кто будет обмениваться между 2 регистрами при помощи арифметики!!!! smile

А вот собственно и ответ:

add EBX, EAX            
sub EAX, EBX        
neg EAX        
sub EBX, EAX

использовали простейшие арифметические команды сложения, вычитания...
Спасибо за правильный путь Sartorius  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)