[iPs]TeaM
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.


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

[Assembly] Swap em Assembly

Ir para baixo  Mensagem [Página 1 de 1]

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

[iPs]BrunoSilva

[iPs]BrunoSilva
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.

http://www.brunodasilva.com

Ir para o topo  Mensagem [Página 1 de 1]

Permissões neste sub-fórum
Não podes responder a tópicos