内嵌汇编小问题
delphi程序代码是这样的
var
s: string;
i,n: integer;
begin
S:= 'Hello,world';
i:= addr(S);//取字符串地址
asm
mov eax,i //我不知道这句哪错了。我要的是把字符串的地址放到eax里
mov edx,[eax-4] //前一个地址读取字符串长度
mov n,edx //把长度保存到n中。执行这行会出错。应该是edx里的值是错误的。也就是说i保存的值也是不对的
end;
end;
还有就是我想 mov eax,S 这样取地址。不知道有什么好办法没。难道每次只能中转一次吗?S是字符串。
帮下忙。谢谢
[解决办法]
asm
mov eax,s
mov edx,[eax-4]
mov n,edx
end;
或者
i:=integer(@s);
asm
mov eax,i
mov eax,[eax]
mov edx,[eax-4]
mov n,edx
end;
[解决办法]
addr相当于@是取变量的地址,你要取的是字串的地址,应该用 i:= Integer(S);