【8086匯編基礎】01--匯編語言簡要介紹


 

8086匯編語言初學者教程(第一部分)

本教程是為從未接觸過匯編語言的或者略知一二的朋友編寫的。

當然,如果你有其他語言基礎(Basic, C/C++, Pascal...) 更

好。但是,即使你熟悉匯編語言,最好也將本文通讀以便熟悉

Emu8086 標記。

這里假定您已經掌握了關於數制的知識(十六進制/二進制),

如果目前還沒有,在進行下面內容之前,請參考上一章節 進制



什么是匯編語言?
 

     匯編語言是底層編程語言。為了學習這門語言,你需要對於

計算機結構有所了解。計算機系統模型如下:

系統總線 system bus(圖中黃色部分)是將計算機各個

部分連接到一起的部件。

CPU是計算機的心臟,大部分的運算都是在CPU中完成的。

RAM是讀取並且存放將要執行的程序的地方。

CPU內部 



通用寄存器

8086CPU有8個通用寄存器,每一個寄存器都有自己的名稱:

  • AX 累加寄存器 accumulator register(分為 AH / AL).
  • BX 基址寄存器 base address register (分為 BH / BL).
  • CX 計數寄存器 count register(分為 CH / CL ).
  • DX 數據寄存器 data register (分為 DH / DL).
  • SI 源變址寄存器 source index register.
  • DI 目的變址寄存器 destination index register.
  • BP 基址指針寄存器 base pointer.
  • SP 堆棧寄存器 stack pointer.
編程中,由程序員決定通用寄存器的具體用途。寄存器的主要目

的是保存數值(變量)。上面提到的寄存器是16位的,意思是:

 0011000000111001b (二進制),或者12345

 (十進制形式)。


4個通用寄存器(AX, BX, CX, DX) 在使用時分為兩個8位

寄存器,例如 假設AX= 0011000000111001b

AH=00110000AL=00111001b。當你修改其中任

意8位值,整個16位寄存器的值同樣改變。同樣對於其他的3

個寄存器,“H”表示高8位,“L”表示低8位。

寄存器在CPU內部,訪問中它們速度遠遠超過內存。因為,

訪問內存需要經過系統總線,所以時間要長一些。而訪問

寄存器中的數據幾乎不需要時間。於是,編程中,應當盡量

在寄存器中保存數據。雖然寄存器很小,並且這些寄存器都

有具體用途,但他們依然是存放計算中臨時數據的好地方。

段寄存器

  • CS 代碼段寄存器,用來存放當前正在運行的指令
  • DS 數據段寄存器,用來存放當前運行程序所用的數據
  • ES 附加段寄存器,由程序員決定用途
  • SS 堆棧段寄存器,指出堆棧所在區域
盡管容許在段寄存器中存放任何數據,但是這決不是

一個好主意。段寄存器有着非常特別的目的--指出

可以訪問內存塊的地址。

段寄存器與通用寄存器協同工作就可以訪問任意的內存

區域。例如,如果我們打算訪問物理地址是12345h

(十六進制)的內存單元,我們應設置DS = 1230h

SI = 0045h 這樣以來,我們便能訪問超過一個寄存器

(16位)所能表示的內存地址的范圍。CPU計算物理地址

的方法是將段寄存器乘以10H在加上一個特定的通用

寄存器。(1230h * 10h + 45h = 12345h):

 
這種,由兩個寄存器生成的地址被稱為有效地址

(effective address)

默認下,BXSI 及 DI 與 DS協同工作,BP SP

與 SS 寄存器協同工作。

其余的通用寄存器不能形成有效地址!同樣,盡管

BX可以形成有效地址,但是BH BL不能!

控制寄存

  • IP 指令指針寄存器 instruction pointer
  • Flags Register 狀態標志寄存器

IP 始終同CS 協同工作,指出當前執行的指令。

Flags Register 完成一次數學運算后,由CPU自動

修改,通過它可以得到當前結果類型,也可以作為跳轉

語句條件。通常你無法直接訪問它們。

<<< 上一部分 <<<【8086匯編基礎】00--基礎知識--各種進制的數據     

>>> 下一部分 >>>【8086匯編基礎】02--尋址方式和MOV指令


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM