请教汇编关于把寄存器赋值给变量出错的问题
用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