彙編 LEA指令

2021-08-04 18:51:44 字數 529 閱讀 6072

lea指令返回間接運算元的偏移位址。由於間接運算元可能使用乙個或多個暫存器,因此其偏移值是在執行時計算的。

void makearray( )
雖然陣列有30位元組,但按4位元組對其,esp減去了32。

makearray proc

push ebp

mov ebp,esp

sub wsp,32

lea esi,[ebp-32]

mov ecx,30

l1:mov byte ptr [esi],'#'

inc esi

loop l1

add esp,32

pop ebp

retmakearray endp

使用offset操作符獲取堆疊引數的位址是不可能的,因為offset只能獲取在編譯時就已經知道的位址。

lea

esi,ffset

[ebp-32] ;錯誤

彙編指令lea

徹底弄懂彙編指令lea lea 是位址傳送指令,在匯程式設計序中很常見。其功能就是把乙個儲存器運算元的位址傳入通用暫存器。乙個十六位通用暫存器 例如 lea ax,bx si ea 偏移量 bx si 其實就是將後者的偏移位址 送人通用暫存器中。為什麼要這樣做呢?建立乙個位址指標唄!用c語言的思維像...

彙編Lea 指令與 Mov 指令

比如你用local在棧上定義了乙個區域性變數localvar,你知道實際的指令是什麼麼?一般都差不多像下面的樣子 push ebp mov esp,ebp sub esp,4 現在棧上就有了4各位元組的空間,這就是你的區域性變數。接下來,你執行mov localvar,4,那麼實際的指令又是什麼?是...

彙編 lea指令和mov指令

load effective address,載入有效位址,可以將有效位址傳送到指定的的暫存器。指令形式是從儲存器讀資料到暫存器,效果是將儲存器的有效位址寫入到目的運算元,簡單說,就是c語言中的 在cpu內或cpu和儲存器之間傳送字或位元組,它傳送的資訊可以從暫存器到暫存器,立即數到暫存器,立即數到...