The code that use as normal functions such as IntToStr, operations on variables like adding compile very well without problems.
As it appears strange call as I wrote in the first post , running becomes impossible.
LStrLAsg is also a "strange" call. You can't use that one either without declaring it as an external function in Delphi. It's the same in FPC. Those fpc_AnsiStr_xxxx_Ref functions need to be declared before you can use them in your code.
But okay... I already showed you how it's done in pure compiler-code:
procedure my_fpc_AnsiStr_Decr_Ref (Var S : Pointer);external name 'FPC_ANSISTR_DECR_REF';
procedure my_fpc_AnsiStr_Incr_Ref (Var S : Pointer);external name 'FPC_ANSISTR_INCR_REF';
procedure TForm1.Button1Click(Sender: TObject);
var
var_1, var_2: String;
begin
var_1 := 'Text1';
var_2 := 'Text2';
// effectively: var_1 := var_2;
{$ASMMODE intel}
asm
mov eax, [var_2]
call my_fpc_ansistr_incr_ref
lea eax, [var_1]
call my_fpc_ansistr_decr_ref
mov eax, [var_2]
mov [var_1], eax
end;
edit1.Text := var_1;
edit2.Text := var_2;
end;
If you really want the call with fpc_ansistr_assign (like you say Delphi does with LStrLAsg) you could do this:
(it does the fpc_ansistr_xxxx_ref internally, in fpc_ansistr_assign, for you)
Procedure fpc_AnsiStr_Assign (Var DestS : Pointer;S2 : Pointer);external name 'FPC_ANSISTR_ASSIGN';
procedure TForm1.Button1Click(Sender: TObject);
var
var_1, var_2: String;
p1,p2: pointer;
begin
var_1 := 'Text1';
var_2 := 'Text2';
{$ASMMODE intel}
asm
mov edx, [var_2]
lea eax, [var_1]
call fpc_ansistr_assign
end;
edit1.Text := var_1;
edit2.Text := var_2;
end;
(Though this last method is less efficient)
Does that answer your question?

Or are you trying to "hack" the binary code?
In that case you would need to know the memory location of the fpc_ansistr_assign function.
If so... with what program are you doing this and how would you do this with Delphi code?