本文描述基本的32位X86匯編語(yǔ)言的一個(gè)子集,其中涉及匯編語(yǔ)言的最核心部分,包括寄存器結(jié)構(gòu),數(shù)據(jù)表示,基本的操作指令(包括數(shù)據(jù)傳送指令、邏輯計(jì)算指令、算數(shù)運(yùn)算指令),以及函數(shù)的調(diào)用規(guī)則。個(gè)人認(rèn)為:在理解了本文后,基本可以無(wú)障礙地閱讀絕大部分標(biāo)準(zhǔn)X86匯編程序。當(dāng)然,更復(fù)雜的指令請(qǐng)參閱Intel相關(guān)文檔。

1 寄存器.

主要寄存器如下圖所示:

大學(xué)生就業(yè)培訓(xùn),高中生培訓(xùn),在職人員轉(zhuǎn)行培訓(xùn),企業(yè)團(tuán)訓(xùn)

 

X86處理器中有8個(gè)32位的通用寄存器。由于歷史的原因,EAX通常用于計(jì)算,ECX通常用于循環(huán)變量計(jì)數(shù)。ESP和EBP有專門(mén)用途,ESP指示棧指針(用于指示棧頂位置),而EBP則是基址指針(用于指示子程序或函數(shù)調(diào)用的基址指針)。如圖中所示,EAX、EBX、ECX和EDX的前兩個(gè)高位字節(jié)和后兩個(gè)低位字節(jié)可以獨(dú)立使用,其中兩位低字節(jié)又被獨(dú)立分為H和L部分,這樣做的原因主要是考慮兼容16位的程序,具體兼容匹配細(xì)節(jié)請(qǐng)查閱相關(guān)文獻(xiàn)。

應(yīng)用寄存器時(shí),其名稱大小寫(xiě)是不敏感的,如EAX和eax沒(méi)有區(qū)別。

2 內(nèi)存和尋址模式

2.1聲明靜態(tài)數(shù)據(jù)區(qū)

可以在X86匯編語(yǔ)言中用匯編指令.DATA聲明靜態(tài)數(shù)據(jù)區(qū)(類似于全局變量),數(shù)據(jù)以單字節(jié)、雙字節(jié)、或雙字(4字節(jié))的方式存放,分別用DB,DW, DD指令表示聲明內(nèi)存的長(zhǎng)度。在匯編語(yǔ)言中,相鄰定義的標(biāo)簽在內(nèi)存中是連續(xù)存放的。

        1. .DATA


          varDB 64  ;聲明一個(gè)字節(jié),并將數(shù)值64放入此字節(jié)中
          var2DB ?; 聲明一個(gè)為初始化的字節(jié).

          延伸閱讀

          學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開(kāi)發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式

          我想了解如何學(xué)習(xí)

          姓名:
          手機(jī):
          留言: