彙編學習第二章

2022-06-12 22:59:11 字數 1821 閱讀 6066

進入彙編第二章的學習,我們逐漸地開始認識這些位於計算機操作底部的硬體和資料。

(一)通用暫存器

通過對第一章的學習,我們了解到了暫存器的作用是進行資訊儲存。而對乙個彙編程式設計師來說,cpu中的主要部件,暫存器是cpu中程式設計師可以用指令讀寫的部件。

在8086cpu中,通用暫存器為ax,bx,cx,dx,它們通常用來存放一般性的資料,所以被稱為通用暫存器。8086中的所有暫存器都是16位的,它們每個又都可以被分為兩個暫存器,以ax舉例,ax可以被分為ah和al,ah用於存放高8位,al用於存放低8位。

(二)字資料在暫存器中的存放

我們知道,任何資料在暫存器中都是以二進位制方式儲存的,但為了描述和解決不同的問題,又會常常將它們用其他的禁止來表示。以8086cpu舉例,它可以一次性地處理以下兩種尺寸的資料:字 與位元組。

位元組:記為byte,乙個位元組由8個bit組成,可以存在8位暫存器中。

字:記為word,乙個字由兩個位元組組成,這兩個位元組分別被稱為這個位元組的高位和低位位元組,可以存在16位暫存器中,這個字的高位位元組和低位位元組自然就存在這個暫存器的高8位和低8位暫存器中。

(三)  cpu給出實體地址的方法

8086cpu中有20位位址匯流排,可以傳送20位位址,它的定址能力可以達到1mb,但是8086cpu為16位結構,暫存器也都是16位的,這意味著它在內部進行處理和傳輸時只能以16位的形式,因此8086cpu中採用一種在內部用兩個16位位址合成的方法來形成乙個20位的實體地址,乙個為段位址,乙個為偏移位址。實際的實體地址=段位址*16+偏移位址。

必須注意到這種表示方法意味著同乙個位址存在著多種不同的表達方式。

(四) 段的概念與段暫存器

段位址中的「段」並不意味著記憶體被劃分為了乙個乙個的段,這個段的概念是由我們自己人為的規定的,比方說,我們可以取10000h~100ffh為乙個段,也可以把它分為4個段,5個段,段的概念是為了我們方便操作而存在的,根據你不同的使用可以劃分不同的段。不過我們需要注意到,因為段位址*16必為16倍數,所以段的起始位址也一定是16的倍數;因為偏移位址為16位,所以乙個段的最大長度位64kb。

在前面我們了解到實際的實體地址是由兩個位址合成而來的,而其中的段位址就是存放在段暫存器中的。8086cpu有4個段暫存器:cs,ds,ss,es。當cpu要訪問記憶體是就由這四個段暫存器提供記憶體單元的段位址,它們分別在不同的情況下工作。在這裡只介紹cs。

cs和ip兩個暫存器指示cpu當前要讀取指令的位址,cs為**段暫存器,ip為指令指標暫存器。在8086pc機中,計算機每執行一條指令完畢,下一條指令的位址就由cs與ip提供,即16*cs中的資料+ip中的資料為下一條指令的實際位址。注意,每次一條指令執行完畢,ip自己增加所讀指令的長度,從而指向下一條指令.

(五) 簡單的彙編指令

mov a,b    代表將b中的資料送入a         a與b可以是暫存器,資料,記憶體單元,段暫存器  

add a,b    代表將b中的資料與a中的資料相加並存於a中    a只能為暫存器和記憶體單元,b可為資料,暫存器,記憶體單元

sub a,b    代表將a中的資料減去b中的資料並存於a中  適用範圍與add相同

jmp 暫存器    代表用指令中給出的暫存器中的值修改ip

彙編學習 第二章

書上的內容 頁數 雖然比第一章多,但是如果第一章理解完全後,第二章其實就是對第一章部分內容的深入操作。這一篇主要就把一些操作總結一下。第二章主要就是從8086cpu的角度,去看一下,cpu如何玩弄記憶體 暫存器就是這一章的主角,cpu和記憶體互動時,需要臨時儲存各種資料或者指令 都是1和0 這些資料...

組合語言 第二章

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個暫存器都可以分為兩個獨立使用...