學習win32彙編指令 lea和offset

2021-06-06 16:04:35 字數 464 閱讀 9690

lea   是機器指令,offset   是偽指令。

lea  bx,  buffer  ;在實際執行時才會將變數buffer的位址放入bx 

mov  bx, offset buffer ;在編譯時就已經計算出buffer的位址為4300(假設),然後將上句替換為: mov bx,4300

lea可以進行比較複雜的計算,比如lea   eax,[esi+ebx*4],把ebx的值*4,加上esi的值,存入eax中。 

mov就不行了。

offset只能取得用"資料定義偽指令"定義的變數的有效位址,不能取得一般運算元的有效位址(摘自80x86組合語言程式設計教程) 

mov   bx,offset   [bx+200]這句是錯誤的     應該用lea   bx,[bx+200]

lea   eax,[ebp] 

說明: eax得到ebp指向的堆疊內容的偏移位址, 和暫存器ebp的值是相同的

win32彙編指令彙總

算數運算指令 add 加法 adc 帶位加法 sbb 帶位減法 sub 減法.inc 加法.nec 求反 以0減之 neg 求反然後加1,假如neg al相當於not al inc al cmp 比較.兩運算元作減法,僅修改標誌位,不回送結果 inc dptr 資料指標暫存器值加1 說明 將16位的...

Win32彙編 MOVS,STOS,REP 指令

movs 指令用於將乙個記憶體運算元的值 複製 到另乙個記憶體運算元,使用 movs 前要把目標記憶體的位址移入 edi,源目標記憶體移入 esi。記憶方法 d表示destination,目標 s表示source,源 執行指令,注意 es edi 和 ds esi 的區別,兩個段不一樣。movs d...

開始學習win32彙編

前段時間對於csdn的部落格系統徹底失望,在我現在寫的東西都還不知道能不能正常發出去,鬱悶,加上過年有這麼久沒有來了。這段時間開始學習彙編,說到彙編,大學開過兩門相關課程,微機原理和微控制器都是學這方面的,不過那都是8086,51級別的彙編,感覺根本跟不上時代,那時候學的還不錯 現在想學習學習win...