Você não está conectado. Conecte-se ou registre-se

[Assembly] Swap em Assembly

Ver o tópico anterior Ver o tópico seguinte Ir em baixo  Mensagem [Página 1 de 1]

1 [Assembly] Swap em Assembly em Dom Dez 25, 2011 10:12 pm

[iPs]BrunoSilva

avatar
Administrador
Saudações!

Estudando Assembly descobri uma forma legal de se fazer swap (troca de valores nas variáveis) usando apenas asm em pascal

Segue o trecho do código:

procedure TForm1.Button1Click(Sender: TObject);

Código:
var X, Y: DWORD;
begin
 // Valores antes do swap
 X := 10;
 Y := 05;

 asm // Parte em Assembly

  mov edx, [x]
  mov ebx, [y]


  mov dword ptr [x], edx
  mov dword ptr [y], ebx

 end;

 // Valores trocados
 ShowMessage('VALOR X ->' + IntToStr(X));
 ShowMessage('VALOR Y ->' + IntToStr(Y));
end;

É uma forma padrão de swap, porém é usado em assembly que passa os valores para pascal.

O sistema usa endereços temporários, no caso são ebx e edx. Os endereços assumem os valores de Y e X que posteriormente são trocados passando o valor as variáveis em pascal.

Ver perfil do usuário http://www.brunodasilva.com

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo  Mensagem [Página 1 de 1]

Permissão deste fórum:
Você não pode responder aos tópicos neste fórum