//在匯編中訪問 Delphi 的變量可以使用 & 操作符
procedure Proc(str1,str2: string);
var
s1,s2: string;
begin
asm
mov ecx, &str1 {}
mov edx, &str2
mov &s1, ecx {}
mov &s2, edx
end;
ShowMessage(s1 + s2);
end;
{在沒有歧義的情況下, 操作符 & 是可以省略的, 譬如上面的例子就可以省略}
//測試
procedure TForm1.Button1Click(Sender: TObject);
begin
Proc('我是', '萬一'); {顯示: 我是萬一}
end;
//在什麼情況下不能省略呢? 例如:
procedure TForm1.Button2Click(Sender: TObject);
var
ecx: Integer; {這個變量和其中一個寄存器重名了}
begin
ecx := 99;
asm
mov ecx, &ecx {現在 ecx 是寄存器; &ecx 是變量}
add ecx, 1
mov &ecx, ecx
end;
ShowMessage(IntToStr(ecx)); {100}
end;
{現在也得知: 其實這之前的例子, 只要是在匯編中使用的本地變量都可以加 & }