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);
É 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.
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.