組合語言的組成
彙編指令
偽指令一些符號
儲存器
概念:
也就是我們平常所說的執行記憶體;指令和資料在內部儲存器中存放;磁碟上的資料不讀取到記憶體中,無法被cpu使用。
目的: 想要編寫出優秀的匯程式設計序,首先我們要了解cpu從記憶體中如何讀取與寫入資料。所以記憶體是彙編重點關注的部分。
必要擴充套件:
一類是內部儲存器,一斷電就會把記住的東西丟失;一類是外部儲存器,斷了電也能存住。
內部儲存器:也就是記憶體,儲存資訊速度快,斷電後儲存內容全部丟失。
外部儲存器:主要是磁碟,它所儲存的資訊不受斷電的影響,但是它的速度相對於記憶體就慢得多了。磁碟的儲存資訊不受斷電的影響,訪問速度相對於記憶體慢得多了。
磁碟又分為兩類:
一類是硬碟,一類是軟盤。
指令和資料概念:
在記憶體或者磁碟上,指令和資料都是二進位制資訊,沒有任何區別;區分稱呼為指令和資料是為了安全和邏輯結構清晰;
必要擴充套件:
二進位制和彙編指令是一一對應關係,也就是說,一條二進位制資訊對應唯一一條彙編指令。
疑問:指令和資料都是應用上的概念。組合語言,通過編譯器編譯,最後送給cpu的都是二進位制數,那麼cpu在一堆紛繁複雜的二進位制,0110000110001中如何區分指令和資料呢?
每台機器的指令,其格式和**所代表的含義都是硬性規定的,故稱之為面向機器的語言,也稱為機器語言。二進位制,作為一種機器碼,計算機可以直接識別,不需要進行任何翻譯。
計算機硬體主要通過不同的時間段來區分指令和資料,即:取指週期(或取指微程式)取出的既為指令,執行週期計算機載入的第一條肯定是指令,然後根據這條指令去取二進位制數,如果這條指令要取運算元,那麼取出來的就是運算元;如果這條指令要取下一條指令,那麼取出來得就是指令。
把指令和資料分開放是為了安全和邏輯結構清晰。
雖然指令和資料存放的格式一樣,但是訪問他們的時機不同。在取指令時期,cpu通過指令流取指令,存放在指令暫存器, 然後解釋並執行指令;在執行指令時期,cpu通過資料流取資料, 存放在資料暫存器。 所以指令流取的是指令,資料流取的是資料。
儲存單元概念:
乙個儲存單元 = 乙個位元組(byte)
乙個位元組 = 8個 位元(b)
乙個位元 = 乙個二進位制位
位元組是微機的最小儲存單位。
cpu對儲存器的讀寫概念:
cpu與外部器件的互動需要知道,要互動哪個器件,資料位址在哪,操作的物件(資料),是讀是寫。傳輸介質是導線。
匯流排概念:
cpu與器件(晶元)通過電訊號在導線上傳輸資訊。這些導線的集合就稱呼為匯流排。
位址匯流排傳輸位址資訊的導線。
控制匯流排其中包含器件選擇、命令控制資訊 。一台微機中,不只有記憶體這一種器件,cpu在發出控制指令時還需指明目標器件。
資料匯流排資料的互動導線。如果是讀,則是元器件通過導線把資料送入cpu;如果是寫,則是cpu把資料送入到器件。
互動步驟儲存單元的位址(位址資訊);
器件的選擇,讀或寫的命令(控制資訊);
讀或寫資料的傳輸(資料資訊);
eg:cup 通過 位址匯流排 向記憶體傳送代表3號位址的位址資訊;
cpu 通過 控制匯流排 向記憶體傳送讀取命令資訊,選中儲存器晶元,並通知它開啟該儲存單元的閘電路;
記憶體 發出位址對應的資料資訊 通過資料匯流排 送入cpu ;
位址匯流排概念:
cpu是通過位址匯流排來指定儲存單元的,也就是說,位址匯流排能傳達多少個不同的資訊,cpu就能對多少個儲存單元進行定址。
總結:
記憶體的位址編號是從0開始,由高往低按小到大編號,而讀的時候,是從低往高讀。
資料匯流排概念:
cpu 和器件的資料匯流排數量決定著傳輸速度。
8088資料匯流排寬度是8位,也就是一次可以傳輸乙個位元組;8086是16位,也就是一次可以傳輸2個位元組。
擴充套件:
為什麼32位系統是x86,不是32呢,而64位又是x64呢?
intel的8086,80286,386~586而得名(命名規則), amd開發的大部分cpu也是基於x86架構的,x86架構的特點是cpu的暫存器是32位的。
它的64位體系結構最早由amd推出,被稱為「amd64」。後來,它也被英特爾採用,被稱為「英特爾64」。也稱為「x86-64」、「x64」。
控制匯流排概念:
控制匯流排和上面兩種線不同,不再是所有線一起作用。控制匯流排是一些不同控制線的集合。有多少根控制線,就以為cpu對外部器件多少種控制。比如對某個器件只提供讀的控制線。所以控制匯流排的寬度體現對外部器件的控制能力。
控制線更多的是以器件劃分圈子。
1.1-1.10 小結
檢測首先明確8kb的定址能力是什麼意思。1根導線分為高電平和低電平,可以表示2個儲存單元的位址,也就是2b的定址能力,以此類推,3根導線可以表示8個位址,10根導線,可以表示1024個儲存單元位址。那8kb=1024x8 b就需要 13根導線。主要是得明白定址能力的單位是b,表示乙個儲存單位。
1024 ; 0-1023
1024x8 bit ; 1024 byte
1gb = 1024mb ; 1mb= 1024kb ; 1kb=1024byte ;1b = 8bit
64kb 、1m 、16m 、4gb 定址能力
1 、1 、2、2、 4 傳送資料能力。8根線一次能傳1個位元組。分批傳輸的時候,注意傳輸順序和在記憶體當中的放置。主要是位址編號和讀的問題。
512 、256 、
二進位制記憶體位址空間
概念:
乙個cpu的位址匯流排寬度位10 ,那麼可定址到1024個儲存單元,這1024個單元就構成了記憶體位址空間。
主機板概念:
主機板上有核心器件與主要器件,他們溝通匯流排(位址匯流排、控制匯流排、資料匯流排)相連。
介面卡概念:
主要是連線外部裝置,顯示器、音響、印表機。cpu對外部裝置不能直接控制,而是通過介面卡來控制。
各類儲存器晶元概念:
從讀寫屬性上分類,分為ram 隨機儲存器 和 rom 唯讀儲存器 。
記憶體位址空間概念:
器件和cpu匯流排相連,並且cpu對他們的讀寫都是通過控制匯流排發出命令。這些器件的儲存單元在邏輯上組成了cpu的邏輯儲存器。這個邏輯儲存器就是記憶體位址空間。
記憶體位址空間的大小,取決於cpu位址匯流排寬度,最基本單位是b(位元組)。 《組合語言》筆記第一章
看了王爽的 組合語言 感覺寫的很好,真的是通俗易懂,為了大家也可以快速瀏覽一下組合語言,我特意將筆記一章一章寫出來。獨樂了不如眾樂樂,不會組合語言的程式設計師不是好程式設計師!一 基礎知識 1.1.組合語言由三類指令組成 1 彙編指令 機器語言的助記符,有對應的機器語言 2 偽指令 沒有對應的機器碼...
組合語言筆記第一章
本著對計算機的熱愛,當然,希望自己能更了解計算機底層實現,所以就來學學這本組合語言了,當然,肯定要對知識點做乙個小結,代表學過,此外,似乎破解什麼需要這個基礎的。本書一共17個章節。第一章是基礎部分 機器指令 一台機器可以正確執行的命令。他是一串二進位制,到機器上對應一系列高低電平,以此驅動電子器件...
組合語言第一章學習筆記
第一章學習筆記 重新看了一遍第一章,發現以前看書太失敗了,看了不如不看,純粹是在浪費時間。以前看時沒概念,看到不懂的似懂非懂過去了。到現在再看時才真的看懂他說的是什麼。這章裡沒有太多內容,只是把儲存器,匯流排結構還有儲存器晶元介紹了一遍。儲存器可以按功能,用途,讀寫方式等分類,都是概念了。本書牽扯到...