彙編學習 第二章

2021-09-16 18:57:36 字數 1378 閱讀 4561

書上的內容(頁數)雖然比第一章多,但是如果第一章理解完全後,第二章其實就是對第一章部分內容的深入操作。這一篇主要就把一些操作總結一下。

第二章主要就是從8086cpu的角度,去看一下,cpu如何玩弄記憶體

暫存器就是這一章的主角,cpu和記憶體互動時,需要臨時儲存各種資料或者指令(都是1和0),這些資料都是存在暫存器裡的。8086是乙個16位的cpu,他的暫存器都是16位的,也就是說能存16位二進位制資料,4位十六進製制。

這裡都是使用8086cpu來作為例子
暫存器分為幾種,我們乙個個來看

8086cpu是16位cpu,但是他的位址匯流排是20位的,那就代表他的定址空間更大了,提高了邏輯儲存器的上限。

我們來理一下關係:cpu內部指定暫存器會存著乙個實體地址,然後通過位址匯流排定位到邏輯儲存器的乙個儲存單元,然後控制匯流排給指定的硬體傳送指令,最後資料匯流排進行資料傳輸。

這裡 8086cpu就出現了分段的概念

實體地址=段位址 左移4位 + 偏移位址

1、段位址是什麼?

段位址是乙個4位十六進製制的資料,假設為0x1234,按照上面說的左移4位(二進位制位)就會變成0x12340多了一位哦。

2、偏移位址是什麼?

偏移位址也是4位十六進製制數的資料,假設為0x1234,那他就是0x1234

3、組合

0x12340+0x1234=0x13574

一共只能有5位十六進製制,因為位址匯流排是20位二進位制也就是5位十六進製制。

那誰來確定段該怎麼分?
這個是靠cpu來決定的,這只是cpu來表示20位十六進製制實體地址的方式,並不是真的把記憶體分段。所以乙個物理地質,可以通過多種多樣的分段方法來體現。

段暫存器 cs

cs也是cpu的暫存器,cs是用來儲存段位址的,也是16位的

指令指標暫存器 ip

ip也是cpu的暫存器,是用來存偏移位址的。

8086cpu,會從cs:ip處開始執行一條指令,cs和ip有點大方向和微調的感覺。ip只有16位,如果cs不變,ip變化,最多也只能搜尋到65536個記憶體單元。

cpu會認為cs:ip指向記憶體單元都是指令而不是資料,

如果已經看過書了,會發現讀取一次cs:ip處的指令後,

ip的值會自動增加,至於如何改變,應該是根據讀取的是什麼指令。

具體的合併處理過程,記得看書哈,我這裡簡單走個圖

彙編指令

第二章剩下部分都是,實際操作問題,這裡我大概說下我遇到的幾個問題。

書上一些使用debug去熟悉一些命令,第一,值都未必和你書上看到的一樣(除了計算答案),

第二,書上實驗會有一部分是讓你往視訊記憶體裡直接修改內容,可能因為我是用模擬器的關係,所以顯示不出來。

彙編學習第二章

進入彙編第二章的學習,我們逐漸地開始認識這些位於計算機操作底部的硬體和資料。一 通用暫存器 通過對第一章的學習,我們了解到了暫存器的作用是進行資訊儲存。而對乙個彙編程式設計師來說,cpu中的主要部件,暫存器是cpu中程式設計師可以用指令讀寫的部件。在8086cpu中,通用暫存器為ax,bx,cx,d...

組合語言 第二章

2.1 通用暫存器 8086cpu的所有暫存器都是16位的,可以存放兩個位元組。ax bx cx dx這4個暫存器通常用來存放一般性的資料,被稱為通用暫存器。2.2字在暫存器中的儲存 位元組 記為byte,乙個位元組由8個bit組成,可以存在8位暫存器中。字 記為word,乙個字由兩個位元組組成,這...

組合語言 第二章

對於乙個彙編程式設計師來說,cpu中的主要部件是暫存器。暫存器是cpu中程式設計師可以用指令讀寫的部件。程式設計師通過改變暫存器裡的內容來實現對cpu的控制。1 8086cpu的所有暫存器都是16位的,可以存放2個位元組。其中8086cpu中的ax bx cx dx這4個暫存器都可以分為兩個獨立使用...