組合語言學習

2022-01-29 11:07:42 字數 2810 閱讀 1839

參考書籍《組合語言》王爽  著/清華大學出版社

選單導航:一、彙編基礎知識

二、暫存器和常見彙編指令演示

一、基礎知識

1、彙編指令是機器指令的助記符,同機器指令一一對應

2、每一種cpu都有自己的彙編指令集

3、cpu可以直接使用的資訊在儲存器中存放

4、在儲存器中指令和資料沒有任何區別,都是二進位制資訊

5、儲存單元從零開始順序編號

6、乙個儲存單元可以儲存8個bit, 即8位二進位制數

7、1byte = 8bit ;    1kb = 1024b ;  1mb = 1024kb ;   1gb = 1024mb

8、cpu要想進行資料的讀寫,必須和外部器件(標準的說法是晶元)進行下面3類資訊的互動:

9、那麼cpu是通過什麼將位址、資料和控制資訊傳到儲存器晶元中的呢?電子計算機能處理、傳輸的資訊都是電訊號,電訊號當然要用導線傳送。

在計算機中專門有連線cpu和其他晶元的導線,通常稱為匯流排。

匯流排從物理上來講,就是一根根導線的集合。根據傳送資訊的不同,匯流排從邏輯上又分為3類:位址、控制、資料

每乙個cpu晶元都有許多管腳,這些管腳和匯流排相連。也可以說,這些管腳引出匯流排。

乙個cpu可以引出3種匯流排的寬度標誌了這個cpu的不同方面的效能。

資料匯流排:資料匯流排的寬度決定了cpu與其他器件進行資料傳送時的一次資料傳送量

控制匯流排:

控制匯流排的寬度決定了cpu對系統中其他器件的控制能力

10、做個小練習

答案:

1、乙個cpu 的定址能力為8kb,那麼它的位址匯流排的寬度為__13__

2、8080,8088,80286,80386的位址匯流排寬度分別為16根,20根,24根,32根.那麼他們的定址能力分別為多少__64__kb, __1__mb,__16__mb,__4__gb

3、8080,8088,8086,80286,80386的資料匯流排寬度分別為8根,8根,16根,16根,32根.那麼它們一次可以傳輸的資料為:__1__b,__1__b,__2__b,__2__b,__4__b

4、從記憶體中讀取1024位元組的資料,8086至少要讀__512__次,80386至少要讀取__256__次.

view code

二、暫存器

1、從物理結構來講,cpu包括運算邏輯部件、暫存器部件和控制部件等

2、對程式設計師來說,cpu中最主要部件是暫存器,可以通過改變暫存器的內容來實現對cpu的控制;

不同的cpu,暫存器的個數、結構是不同的。比如8086是16位結構的cpu, 

8086有14個16位的暫存器,每個可以存放2個位元組。

3、通用暫存器的作用

舉例說明,在記憶體中有塊紅色記憶體空間的值是3,現在想把它的值加1,並將新的計算結果儲存到藍色記憶體空間,如圖所示

那麼這個在cpu的執行步驟是怎樣的呢?

1)、cpu首先會將紅色記憶體空間的值放到ax暫存器中:mov ax, 紅色記憶體空間

2)、然後讓ax暫存器與1相加:add ax, 1

3)、最後將值賦值給記憶體空間:mov  藍色記憶體空間,ax

4、資料暫存器的相容:

5、彙編指令舉例

接下來看一下cpu執行下圖中的每條指令後,對暫存器中的資料進行的改變:

說明,假設原ax中的值:0000h,   原bx中的值:0000h

為什麼程式段中最後一條指令 add  ax,bx, 在執行前ax和bx中的資料都為8226h, 相加後所得值為044ch, 而不是:1044ch ?

因為ax為16位暫存器,只能存放4位16進製制的資料,所以最高位的1不能在ax中儲存,ax最後儲存的資料為:044ch

再來看一段程式段的指令,注意高位和低位暫存器的計算

最後乙個指令  add  al,93h後ax中的資料為0058h, 為啥?

執行前,al中的資料為c5h, 相加93h為158h, 但是al為乙個獨立8位暫存器,和ah沒有關係,cpu在執行這條指令時認為ah和al時兩個不相關的暫存器。

所以只能存放兩位十六進製制的資料,所以最高位的1丟失。

另外,在進行資料傳送或運算時,要注意指令的兩個操作物件的位數應當是一致的,例如下圖這些是正確的指令:

而下面的指令等都是錯誤的指令

組合語言學習

持續更新 彙編指令 1.mov指令 mov是乙個傳送指令,可以實現以下操作 有一點需要注意,資料不能直接傳給段暫存器,比如mov ds,100h就是錯誤的。但是可以將其他暫存器中的值賦給段暫存器。段暫存器有cs,ds,ss,es等。如果你想知道為什麼,那就可以去了解一下關於每條指令的硬體實現。後面還...

組合語言學習筆記

學習參考資料 大灰狼 講彙編 資料匯流排,位址匯流排,控制匯流排。位址匯流排有多少條就決定了cpu最大的記憶體使用量。80386有32位位址匯流排,所以它的定址能力就是4g.暫存器 通用暫存器,段暫存器,ax暫存器 通用暫存器,存放資料。高位位元組ah,低位位元組al。實體地址表示方法 位址加法器,...

組合語言學習四

本人比較懶,可能懶得對前面的文章進行整理,也不怎麼喜歡寫很多,呵呵。今天往後的系列可能會更懶一些,基本翻譯jones 1 and.bartlett.publishers.introduction.to.80x86.assembly.language.and.computer.architecture...