程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 初學Delphi嵌入匯編[15] - 需要保護的寄存器

初學Delphi嵌入匯編[15] - 需要保護的寄存器

編輯:Delphi

前面提到 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;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved