首页 / 软件开发 / Delphi / 初学Delphi嵌入汇编[15] - 需要保护的寄存器
初学Delphi嵌入汇编[15] - 需要保护的寄存器2012-04-13 博客园 万一前面提到 32 位的寄存器有: EAX EBX ECX EDX ESP EBP ESI EDI; 其中, EAX ECX EDX 是自由使用的.那么剩下的 EBX ESP EBP ESI EDI 五个寄存器就是应该保护的!所谓保护, 并不是不可以使用, 而是在使用前先把其中的值寄存在另外一个地方, 用 完后再恢复其值.如果不这样做, 有可能会发生意想不到的错误.举例://使用应该保护的 ebx 寄存器function Fun(x: Integer): Integer;
asm
push ebx {push 是入栈指令, 栈就是系统自动分配的内存}
mov ebx, x
inc ebx
mov @Result, ebx
pop ebx {pop 是出栈指令, 也就是恢复 ebx 寄存器原来的值}
end;
//测试procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
begin
i := Fun(8);
ShowMessage(IntToStr(i)); {9}
end;