組合語言學習筆記03 暫存器(CPU工作原理)

2021-10-09 21:48:11 字數 1602 閱讀 6594

在筆記01和02我們主要學習了cpu的外部通訊,即cpu如何和其他的器件去聯絡。

而現在呢我們要學習的是內部通訊,即cpu內部是如何工作的。

這一段的內容重點在段暫存器上,包括偏移位址 實體地址等。

由於將基礎知識分為第一大塊內容,所以我們現在從2來命名

乙個典型的cpu有運算器、控制器、暫存器等器件組成,這些器件需要靠內部匯流排相連。

那麼我們之前學的位址匯流排等等三種匯流排又是什麼呢?和cpu內部的匯流排不一樣,它們統稱為外部匯流排。 外部匯流排主要負責的是實現cpu和主機板上各個器件之間的聯絡。

cpu的組成

暫存器是cpu內部的資訊儲存單元

還是以8086cpu來舉例,其共有14個暫存器:

共性:8086cpu所有的暫存器都是16位的,可以存放兩個位元組

我們以ax為例。

這是乙個16位的暫存器,用來儲存乙個16位的資料,它所能儲存的最大值顯然是2的16次方-1(因為都是二進位制儲存),用16位表示最大值則是ffffh。

那我們現在來儲存18d(d是十進位制)這個資料。

以上是這些通用暫存器的儲存形式,bx,cx等都是一樣的。

現在來想乙個問題,8086是16位的,那我們現在都是64位的,再往前8088是8位的,這樣就導致後代的cpu編寫出來的程式,在前代沒法用,那又如何去保證程式的相容性呢?

我們不難發現,十六進製制的4e20很容易對應出來其二進位制,而十進位制在分開後就不是很直觀,所以我們在學習組合語言的時候,要習慣用過十六進製制。

ax可以分為ah和al,其他的通用暫存器也是同樣的。

由於網課的安排並沒有一下子就講完所有的暫存器,所以這裡等講到了我會補上。

指標暫存器要跟ss堆疊暫存器一起使用。

sp是乙個一直指向棧頂的指標,比如存乙個0123h在棧裡,sp就會自動+2.

而bp是用來協助sp去找到我們需要的位址,由於sp只能指向棧頂,所以我們必須再找乙個bp去找到運算元對應的位址。

ip暫存器常常和cs段暫存器一起使用,用cs:ip來作為乙個位址,指向的內容作為指令被cpu執行。

由於彙編指令翻譯成機器指令後一般由三個記憶體單元儲存,比如把mov ax,0123h這個指令放到實體地址為cs:ip=2000:0000的地方,其實是20002儲存01,20001儲存23,20000儲存b8.

這樣一來,執行完這條指令後,ip暫存器就會自動+3,變為0003。

可以看到執行完之後ip加了3(圖中指令沒有完全按照文字說的來,但ip都是一樣的)

段暫存器是專門用來存放段位址的暫存器。

8086cpu中一共有4個段暫存器——

由於網課的安排並沒有一下子就講完所有的暫存器,所以這裡等講到了我會補上。

組合語言學習筆記(三)暫存器 記憶體訪問

3.1記憶體中字的儲存 字型資料與位元組型資料 前者是乙個位元組,兩個16位的數 任何兩個位址連續的記憶體單元,n和n 1,可以將他們看成兩個記憶體單元,也可以看成乙個位址為n的字單元中的高位位元組單元和低位位元組單元 3.2ds和address mov bx,1000h mov ds,bx mov...

組合語言 暫存器

乙個典型的cpu由運算器 控制器 暫存器等器件組成,這些器件靠內部匯流排相連。通用暫存器 ax bx cx dx 段位址暫存器 cs ds es ss 專用暫存器 bp sp si di 指令指標暫存器 ip 標誌暫存器 psw ah al ax accumulator 累加暫存器 bh bl bx...

組合語言 暫存器

乙個cpu由暫存器,運算器,控制器組成,暫存器負責儲存資料。通用暫存器 ax,bx,cx,dx。8086cpu的暫存器都是16位的,能存放兩個位元組。乙個暫存器又能分為兩個部分,乙個高位位元組如ah,還有乙個地位位元組如al。這兩個部分可以單獨看成乙個八位暫存器來用。當暫存器當整體來看時,它可以進行...