新手求解,关于DELPHI嵌入汇编小疑问。
刚开始接触DELPHI,提出的问题太菜请别见怪。具体代码如下:
implementation
var
pi:string;
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
pi:='B';
asm
push eax
mov eax,41h
mov pi,eax
pop eax
end
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Button1.Caption:=pi;
end;
end.
当我按下Button1按钮的时候会提示错误,主要错误出在mov eax,41h这里,41H不是A的ASCII码吗?
如果把mov eax,41h改为mov eax,'C' 一样会提示错误,但改为mov eax,字符串变量名 就可以正常执行,为什么不能直接修改寄存器值? eax 数据不可写导致的!
eea:Dword;
mov eea,41h 谢谢楼上指点,但后来实验出EAX是可直接修改的,原因是出在string是一个超出32位的变量,所以不能与寄存器直接赋值操作,。把string换成CHAR之类的有长度字符串就可以正常操作。
页:
[1]