80x86微處理器結構及其工作模式

來源:本網整理

80X86微處理器系列是美國Intel公司從20世紀70年代開始研制的微處理器的總稱。我們先簡單介紹80X86微處理器的發展概況,然后簡要說明基于微處理器8086的計算機系統構成,最后將根據匯編語言編程的需要分節介紹8086微處理器的基本組成、8086寄存器組、存儲器和外部設備。1.從8080/8085到80868086是1978年Intel公司推出的16位微處理器。與其前一代8位微處理器8080/8085相比,8086有如下幾點進步:(1)8086有16位數據總線,處理器與外部傳送數據時,一次可傳送16位二進制數,而8080/8085一次只能傳送8位。(2)8086的尋址空間從8080/8085的64K字節提高到1M字節。(3)8086采用了流水線技術,而8080/8085是非流水線結構。在一個具有流水線結構處理器的系統中,可以實現處理器的內部操作與存儲器或I/O接口之間的數據傳送操作重疊進行,從而提高了處理器的性能。2.從8086到80888086的內部寄存器、功能部件、數據通路以及對外的數據總線均為16位寬度,它的出現是計算機技術上一個很大的進步。但是,當時已有的微處理器外圍配套芯片的數據總線都是8位的,為了使用這些8位的外圍芯片組成系統,Intel公司又推出了8088微處理器。8088的內部結構與8086基本相同,也提供16位的處理能力,但對外的數據總線設計成8位。1981年IBM公司選擇8088微處理器作為核心來設計IBM PC微計算機系統,推向市場后獲得了巨大的成功,為后來的80x86系列微處理器成為主流微計算機的處理核心打下了基礎。3.80286、80386到Pentium微處理器由于用戶對PC機性能的要求迅速提高,Intel公司在1982年推出了80286微處理器,它仍然是16位結構。80286的內部及外部數據總線都是16位的,但它的地址線是24位的,可尋址16M字節的存儲空間。80286有兩種工作方式,即實模式和保護模式。實模式與8086工作方式相同,但速度比8086快。保護模式除了仍具有16M字節的存儲器物理地址空間外,她還能為每個任務提供1G(230)字節的虛擬存儲器地址空間。保護方式把操作系統及各任務所分配到的地址空間隔離開,避免程序之間的相互干擾,保證系統在多任務環境下正常工作。80386是1985年研制出的一個32位微處理器,內部及外部數據總線均為32位,地址線也為32位,因此它可處理4G(232)字節的物理存儲空間。80386為每個任務提供的虛擬存儲空間增加到64T(246)字節。1989年Intel公司又研制出新一代的微處理器80486,80486芯片內除了有一個與80386相同結構的主處理器外,還集成了一個浮點處理部件FPU以及一個8K字節的高速緩沖存儲器(cache),使80486的計算速度和總體性能比80386有了明顯的提高。1993年Intel公司又推出了Pentium微處理器,此后幾乎每兩年就推出一個新型號,至今市場上的Intel微處理器已是PentiumⅣ。由此可見,微處理器芯片的發展速度是非?斓。在微處理器的發展過程中,芯片主頻越來越快,尋址空間越來越大,數據和地址總線也越來越寬,加之許多體系結構方面的改進措施,如流水線結構、存儲器層次結構等,使微計算機的性能大大提高,其應用領域也更加廣泛www.anxorj.tw防采集請勿采集本網。

80X86是一系列微處理器

微處理器又稱為中央處理單元,即CPU,是一塊集成電路芯片。它是微型計算機的核心組成部分。

隨著計算機技術的發展,微處理器的結構越來越復雜,采用的新技術越來越多,功能也越來越強。但本節所采用的最簡單化的CPU模型,在描述CPU基本工作原理及組成中并不失有效性和正確性。二、微處理器的分類

既然微處理器是微型計算機的核心,那么我們有必要先來簡單地討論一下微型計算機。

微型計算機:

1、實地址方式:具有32條地址線的微處理器只有低20條地址線起作用,能尋址1M字節的物理地址。實地址方式和保護虛地址方式的區分是由控制寄存器CR0的最低位PE位決定的。若PE位為0,則工作在實地址方式;若

微型計算機是指以微處理器為核心,配上存儲器、輸入/輸出接口電路等所組成的計算機(又稱為主機)。

微型計算機在結構形式上總是采用總線結構,即構成微機的各功能部件(微處理器、存儲器、I/O接口電路等)之間通過總線相連接,這是微型計算機系統結構上的獨特之處。采用總線結構之后,使系統中各功能部件

微型計算機系統是指以微型計算機為中心,配以相應的外圍設備、電源和輔助電路(統稱硬件)以及指揮電路工作的系統軟件所構成的系統。即,與一般的計算機系統一樣,微型計算機系統也是由硬件和軟件兩部分組成的。

PC技術就是計算機硬件技術 全國計算機等級考試三級PC技術考試大綱-基本要求 1.具有計算機及其應用的基礎知識。2.熟悉80X86微處理器的結構、原理及其宏匯編語言程序設計。3.掌握個人計算機的工作

這里寫圖片描述

下面,我將介紹一些微型計算機系統中所涉及的基本概念,可能每個概念之間暫時沒有很明顯的關聯,但是,本著不用就不提的原則,盡量將所提到的知識點都串起來形成一個易于理解的簡單知識框架。

CPU從最初發展至今已經有二十多年的歷史了,這期間,按照其處理信息的字長,CPU可以分為:4位微處理器、8位微處理器、16位微處理器、32位微處理器以及最新的64位微處理器,可以說個人電腦的發展

就像大腦控制著人工作一樣,

CPU控制著整個計算機的運作并進行運算。要想讓一個CPU工作就必須向它提供指令和數據。指令和數據在存儲器中存放,也就是我們平時所說的內存(以下如果沒做特別聲明,所提到的存儲器就是指內存)。磁盤不同于內存,如果磁盤上面的數據或程序不被讀入內存,就無法被CPU使用。

指令和數據是應用上的概念,指令和數據沒有任何區別,都是二進制信息。 CPU在工作時把有的信息看作指令,有的信息看作數據,為同樣的信息賦予了不同的含義。

存儲單元:存儲器被劃分成若干個存儲單元,一個存儲單元存儲一個字節的信息,也就是8個二進制位。

有以下單位換算:

1B = 8個二進制位1KB = 1024B1MB = 1024KB1GB = 1024MB1TB = 1024GB

每個存儲單元從0開始順序編號,這些編號可以看作存儲單元在內存中的地址。如下圖是一個擁有128個存儲單元的存儲器:

這里寫圖片描述

CPU工作時經常要從內存中讀取數據或者向內存中寫入數據,這個過程需要CPU和存儲器之間進行地址信息、數據信息和控制信息交互。

那么,CPU是通過什么將這三種信息傳到存儲器芯片中的呢?電子計算機能處理、傳輸的信息都是電信號,電信號當然要用導線傳送。

在計算機中有專門連接CPU和其他芯片的導線,通常稱為總線?偩從物理上來講,就是一根根導線的集合。根據傳送信息的不同,總線從邏輯上又分為地址總線、控制總線和數據總線三類。

總線可以是帶狀的扁平電纜線,也可以是印刷板上一層極薄的金屬連線。

CPU從內存單元讀取數據的過程如下圖:

這里寫圖片描述

(1)CPU通過地址線將地址信息3發出

(2)CPU通過控制線發出內存讀命令,選中存儲器芯片,并通知它,將要從中讀取數據。

(3)存儲器將3號單元中的數據08通過數據線送入CPU。

寫操作與讀操作類似!如向3號單元寫入數據2,則步驟為:

(1)CPU通過地址線將地址信息3發出。

(2)CPU通過控制總線發出內存寫命令,選中存儲器芯片,并通知它,要向里面寫數據。

(3)CPU通過數據總線將數據2送入內存的3號單元中。

下面我們來簡單介紹一下這三種總線,

地址總線AB:在對存儲器或I/O端口進行訪問時,傳送由CPU提供的要訪問的存儲單元或I/O端口的地址信息。AB是單向總線。

一個CPU有N根地址線,則可以說這個CPU的地址總線寬度為N,這樣的CPU可以尋找2的N次方個內存單元。

數據總線DB:CPU與內存或其他器件之間的數據傳送是通過數據總線來完成的,數據總線的寬度決定了CPU和外界的數據傳送速度。8根數據總線一次可傳送一個字節。8088CPU的數據總線寬度為8,8086CPU的數據總線寬度為16。

例如,CPU想向內存中寫入數據89D8。

因為8088一次只能傳送一個字節的數據也就是8位,所以它要分兩次傳送,第一次傳送D8,第二次傳送89。但是8086有16根數據總線,可以傳送兩個字節的數據,所以可一次性將數據89D8傳入內存。DB是雙向總線

控制總線CB:控制總線是一些不同的控制線的集合。有多少根控制總線就意味著CPU提供了對外部器件的多少種控制,控制總線的寬度決定了CPU對外部器件的控制能力。

我們知道,CPU由運算器(ALU)、控制器(CU)和內部寄存器(R)三部分組成。

控制器:

控制器是全機的指揮中心,它負責把指令逐條從存儲器中取出,經譯碼分析后向全機發出取數、執行、存數等控制命令,以完成程序所要求的功能?刂破靼ㄒ韵聨讉部分:

a.指令寄存器IR:用來存放從存儲器取出的將要執行的指令碼。

當執行一條指令時,先把它從內存取到數據緩沖寄存器DR中,然后再傳送到指令寄存器IR中。

b.指令譯碼器ID:對指令寄存器IR中的指令操作碼字段進行譯碼,以確定該指令執行什么操作。

需要說明的是,指令通常由操作碼和操作數兩部分組成。操作碼表示該指令完成的操作,操作數表示參加操作的數本身或操作數所在地址。

c.可編程邏輯陣列PLA:用于產生取指令和執行指令所需要的各種微操作控制信號,并經過控制總線CB送往有關部件,使計算機完成相應的操作。

內部寄存器:

1)程序計數器PC:程序計數器有時也被稱為指令指針(IP),IP一般都是由CPU自動修改加一,使其總是存放下一條要執行的指令所在存儲單元的地址。但當遇到跳轉等改變程序執行順序的指令時,PC(IP)將從指令寄存器IR

中的地址字段得到。

2)地址寄存器AR:用來存放正要取出的指令的地址或操作數的地址。

3)數據緩沖寄存器DR:用來暫時存放指令或數據。它是CPU和內存、外部設備之間信息傳送的中轉站,用來補償CPU和內存、外圍設備之間在操作速度上存在的差異。

4)累加器:用來暫時存放ALU運算結果。

5)標志寄存器FLAGS:有時也稱為程序狀態字(PSW)。編寫程序時,可以通過測試有關標志位的狀態(1或0)來決定程序的流向。

6)寄存器陣列:寄存器陣列實際上就相當于CPU內部的RAM,可避免CPU頻繁的訪問存儲器,提高機器的運行速度。不同類型的CPU的寄存器陣列規模大小會有所不同。

CPU還有一個組成部分是運算器(算數邏輯單元ALU),運算器的主要作用就是運算嘛,參加運算的兩個操作數一個來自累加器A,一個來自內部數據總線,可以是緩沖寄存器中的內容,也可以是寄存器陣列中某個寄存器中的內容。

在這里我們對內存的描述就只是在需要用到某個概念的時候就簡單介紹一下,由于它所含信息量過多,這兒不做詳細的說明。

在每個PC機中,都有一個主板。主板上有核心器件和一些主要器件,這些器件通過總線相連。這些器件有CPU、存儲器、外圍芯片組、擴展插槽等。擴展插槽上一般插有RAM內存條和各類接卡口。

CPU對外部設備都不能直接控制,如顯示器、音箱、打印機等。直接控制這些設備進行工作的是插在擴展槽上的接卡口。擴展槽通過總線和CPU相連,所以接卡口也通過總線和 CPU相連。CPU通過總線向接卡口發送命令,接卡口根據命令控制外設工作。

好了,對于微型計算機的硬件我們就先簡單介紹到這里,主要描述了主機上的CPU所涉及到的一些硬件概念。對于系統中的其他硬件例如,外圍設備,以及主機上的存儲器、I/O接口與輸入輸出設備等。

同時,軟件也是微型計算機系統不可缺少的組成部分,軟件包括系統軟件和用戶(應用軟件)。系統軟件是不需要干預的,為其他程序的開發、調試以及運行等建立一個良好環境的程序。它主要包括操作系統和系統應用程序。

微型計算機的工作過程:

1) 把第一條指令所在存儲單元的地址賦給程序計數器PC。

2)取址,得到指令

3)對指令的操作碼字段進行譯碼,發出執行指令的微操作控制信號。

4)執行指令,完成指令所規定的操作。

對微型計算機系統做了一些簡單的了解以后,我們對微處理器的工作情景也就更為熟悉,讓我們先來看一幅處理器內部寄存器的輪廓圖。

這里寫圖片描述

這塊兒說明一下,做圖片的時候由于考慮不周,圖片比例沒調好,顯示出來特別小,可以把縮放率調大一點再看圖,例如,Ctrl + 四下,哈哈!

我們注意到上述多次提到段地址、段寄存器,這兩個名詞中包含者“段”這個概念,下面我們就來簡單說明一下,什么是段。

8086CPU用 基礎地址(段地址×16)+偏移地址 = 物理地址 的方式給出內存單元的物理地址,使得我們可以用分段的方式來管理內存。

為了防止不理解,我這里再重申一遍。也就是說,實際內存中并沒有分段,段的劃分來自于CPU,只是CPU自己用段地址和偏移地址來表示物理地址而已。

以后,在編程時可以根據需要,將若干地址連續的內存單元看作一個段。這里的編程指的是匯編語言編程。需要注意的是,由于段地址×16必然是16的倍數,所以一個段的起始地址也一定是16的倍數。偏移地址為16位,16位地址的尋址能力為64KB,所以一個段的長度最大為64KB。

那么,基礎地址為什么一定要是 段地址×16不是乘其他數呢?由于地址總線是20位的,所以CPU在對內存訪問時,必須提供一個20位的地址信息給地址總線。又因為段地址存放在16位的段寄存器中,所以必須×16(10H),即左移四位才能使之變成20位的基礎地址,再加上偏移量就能定位到具體的物理內存單元了。

本來想著用一篇博客的內容就把8086微處理器大致介紹完,但是寫著寫著才發現牽扯的內容實在太多,一不小心就跑遠了。下面我以從功能上劃分8086微處理器為結尾,暫時先把簡單概念介紹到這里,至于具體的堆棧操作以及中斷和工作模式等概念和它們所用到的一些基礎的匯編語言指令,只好在下篇再作介紹。

CPU從功能上可分為兩大部分:

1.總線接口單元BIU:

總線接口單元BIU的功能是負責完成CPU與存儲器或I/O設備之間的數據傳送。

2.執行單元EU:

執行單元不與系統外部直接相連,它的功能只是負責執行指令。執行的指令從BIU的指令緩沖隊列中直接得到。執行指令時若需要從存儲器或I/O端口讀寫操作數,由EU向BIU發出請求,再由BIU對存儲器或I/O端口進行訪問。

總之就是,BIU負責與系統外部交互,EU負責一心一意的執行指令。 $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('

    ').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('
  • ').text(i)); }; $numbering.fadeIn(1700); }); });

    本文轉載自the_scent_of_th_soul博客,版權歸the_scent_of_th_soul所有

    高級語言不需要對計算機的硬件有太多的了解就可以學習的語言,可移植性比較好;匯編語言屬于低級語言,它和計算機的硬件組織有關,首先,掌握CPU、存儲器、外設的工作原理;其次,掌握匯編語言的指令和偽指令的格式、功能、使用方法;最后,掌握程序設計結構、設計方法。你有什么問題可以提出來,我會盡力幫助你回答的內容來自www.anxorj.tw請勿采集。

免責聲明 - 關于我們 - 聯系我們 - 廣告聯系 - 友情鏈接 - 幫助中心 - 頻道導航
Copyright © 2017 www.anxorj.tw All Rights Reserved
陕西快乐10分下载