LEA - 載入有效地址

操作碼

指令

說明

8D /r

LEA r16,m

m 的有效地址儲存到暫存器 r16

8D /r

LEA r32,m

m 的有效地址儲存到暫存器 r32

說明

計算第二個運算元(源運算元)的有效地址,並將它儲存到第一個運算元(目標運算元)。源運算元是使用處理器定址模式之一指定的記憶體地址(偏移量部分);目標運算元是通用暫存器。地址大小與運算元大小屬性會影響此指令執行的操作,具體如下表所示。指令的運算元大小屬性由所選的暫存器確定;地址大小屬性由程式碼段的屬性確定。

運算元大小

地址大小

執行的操作

16

16

計算 16 位有效地址,並將它儲存到所需的 16 位目標暫存器。

16

32

計算 32 位有效地址。地址的低 16 位儲存到所需的 16 位目標暫存器。

32

16

計算 16 位有效地址。對 16 位地址進行零擴充套件,並將它儲存到所需的 32 位目標暫存器。

32

32

計算 32 位有效地址,並將它儲存到所需的 32 位目標暫存器。

根據源運算元的大小屬性與符號引用,不同的彙編器可能會使用不同的演算法。

操作

IF OperandSize 16 AND AddressSize 16
THEN
DEST EffectiveAddress(SRC); (* 16-bit address *)
ELSE IF OperandSize 16 AND AddressSize 32
THEN
temp EffectiveAddress(SRC); (* 32-bit address *)
DEST temp[0..15]; (* 16-bit address *)
ELSE IF OperandSize 32 AND AddressSize 16
THEN
temp EffectiveAddress(SRC); (* 16-bit address *)
DEST ZeroExtend(temp); (* 32-bit address *)
ELSE IF OperandSize 32 AND AddressSize 32
THEN
DEST EffectiveAddress(SRC); (* 32-bit address *)
FI;
FI;

影響的標誌

無。

保護模式異常

#UD - 如果源運算元不是記憶體位置。

實地址模式異常

#UD - 如果源運算元不是記憶體位置。

虛 8086 模式異常

#UD - 如果源運算元不是記憶體位置。