请问汇编关于把寄存器赋值给变量出错的有关问题

请教汇编关于把寄存器赋值给变量出错的问题
用delphi写了点东西,需要把寄存器赋值给变量,运行时提示内存读取错误不知道是错在
MOV vgwxls1,ECX
还是错在 strls:=inttostr(0)+'序号'+inttostr(longint(vgwxls));

代码例子:

var
vgwxls:dword;
strls:string;
begin
asm
CALL $1000000
MOV vgwxls,ECX
end;
//到这里不会往下走了,但是ecx,绝对有值,那个CALL $1000000,我现在只是举个例子, 我在od跟踪下来,call完,ecx有值,
strls:=inttostr(0)+'序号'+inttostr(longint(vgwxls));
Memo1.Lines.Add(strls);
end;

请各位大大指教下,问题出在哪

------解决方案--------------------
表面看起来没问题。估计是CALL $1000000内部把某些寄存器的值改了造成的,你应该:
pushad
CALL $1000000
popad