首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> Delphi

Delphi 內嵌組合語言:8/16/32 位寄存器關係圖解

     編輯:Delphi

x86 寄存器層級結構與重疊關係

32 位模式下主用 32 位寄存器(EAX、EBX、ECX、EDX),它們包含 16 位與 8 位子寄存器,形成層級重疊關係,實現向下兼容。

寄存器層級圖解

寄存器關係圖

  • EAX (32位) → 低 16 位為 AX → 高 8 位 AH、低 8 位 AL
  • EBX → BX → BH/BL
  • ECX → CX → CH/CL
  • EDX → DX → DH/DL

賦值傳遞驗證

測試 1:寫入 32 位 → 讀取子寄存器

var i: Integer; w: Word; b1,b2: Byte;
begin
  i := MaxInt;  { $7FFFFFFF }
  asm
    mov ecx, i
    mov w, cx   {低 16 位}
    mov b1, ch  {高 8 位}
    mov b2, cl  {低 8 位}
  end;
  {結果: w=65535, b1=255, b2=255}
end;

測試 2:寫入 8 位 → 讀取父寄存器

var i: Integer; w: Word; b: Byte;
begin
  b := 255;
  asm
    mov cl, b
    mov w, cx
    mov i, ecx
  end;
  {結果: i=255, w=255}

注意: 實測發現 DL/DX/EDX 組合行為異常,需進一步排查原因(可能涉及調用約定保留寄存器)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved