




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第2章微型計(jì)算機(jī)概述 2.1 微型計(jì)算機(jī)的基本結(jié)構(gòu) 2.2 8086(8088)cpu 2.3 系統(tǒng)總線的形成 習(xí)題 第2章微型計(jì)算機(jī)概述 2.1 微型計(jì)算機(jī)的基本結(jié)構(gòu)微型計(jì)算機(jī)的基本結(jié)構(gòu) 2.1.1 微型計(jì)算機(jī)的組成及各部分的功能微型計(jì)算機(jī)的組成及各部分的功能 在這里將簡(jiǎn)略地介紹微型計(jì)算機(jī)的組成以及各部分的 功能,基本目的在于使讀者在總體上對(duì)微型計(jì)算機(jī)有一 個(gè)大概的認(rèn)識(shí)。至于各部分的細(xì)節(jié),則是本書后面章節(jié) 的內(nèi)容。 提到微型計(jì)算機(jī)的組成,讀者應(yīng)立即想到它是由硬件 系統(tǒng)和軟件系統(tǒng)兩大部分構(gòu)成的。 第2章微型計(jì)算機(jī)概述 1硬件系統(tǒng) 微型計(jì)算機(jī)硬件系統(tǒng)如圖2.1所示。 第2章微型計(jì)算機(jī)概述 圖2.
2、1 微型計(jì)算機(jī)結(jié)構(gòu)框圖 第2章微型計(jì)算機(jī)概述 通常,將圖2.1中用虛線框起來(lái)的部分叫做微型計(jì)算機(jī)。 若將該部分集成在一塊集成電路芯片上,則叫做單片微型 計(jì)算機(jī),簡(jiǎn)稱單片機(jī)。若在該部分的基礎(chǔ)上,再包括構(gòu)成 微型計(jì)算機(jī)所必需的外設(shè),則構(gòu)成了微型計(jì)算機(jī)系統(tǒng),實(shí) 際上是指硬件系統(tǒng)。 微型計(jì)算機(jī)主要由如下幾個(gè)部分組成:微處理器或稱 中央處理單元(cpu)、內(nèi)部存儲(chǔ)器(簡(jiǎn)稱內(nèi)存)、輸入/輸出 接口(簡(jiǎn)稱接口)及系統(tǒng)總線。 第2章微型計(jì)算機(jī)概述 1) cpu cpu是一個(gè)復(fù)雜的電子邏輯元件,它包含了早期計(jì)算 機(jī)中的運(yùn)算器、控制器及其他功能,能進(jìn)行算術(shù)、邏輯運(yùn) 算及控制操作?,F(xiàn)在經(jīng)常見(jiàn)到的cpu均采用超大規(guī)模
3、集成 技術(shù)做成單片集成電路。它的結(jié)構(gòu)很復(fù)雜、功能很強(qiáng)大。 后面將詳細(xì)地對(duì)它加以說(shuō)明。 第2章微型計(jì)算機(jī)概述 2) 內(nèi)存 所謂內(nèi)存就是指微型計(jì)算機(jī)內(nèi)部的存儲(chǔ)器。由圖2.1可 以看到,內(nèi)存是直接連接在系統(tǒng)總線上的。因此,內(nèi)存的 存取速度比較快。由于內(nèi)存價(jià)格較高,一般其容量較小。 這與作為外設(shè)(外部設(shè)備)的外部存儲(chǔ)器剛好相反,后者容 量大而速度慢。 內(nèi)存用來(lái)存放微型計(jì)算機(jī)要執(zhí)行的程序及數(shù)據(jù)。在微 型計(jì)算機(jī)的工作過(guò)程中,cpu從內(nèi)存中取出程序執(zhí)行或取 出數(shù)據(jù)進(jìn)行加工處理。這種由內(nèi)存取出的過(guò)程稱為讀出內(nèi) 存,而將數(shù)據(jù)或程序存放于內(nèi)存的過(guò)程則稱為寫入內(nèi)存。 第2章微型計(jì)算機(jī)概述 存儲(chǔ)器由許多單元組成,每個(gè)
4、單元存放一組二進(jìn)制數(shù)。 我們將要學(xué)習(xí)的這種微型計(jì)算機(jī)中規(guī)定每個(gè)存儲(chǔ)單元存放 8位二進(jìn)制數(shù),8位二進(jìn)制數(shù)定義為一個(gè)字節(jié)。為了區(qū)分各 個(gè)存儲(chǔ)單元,就給每個(gè)存儲(chǔ)單元編上不同的號(hào)碼,人們把 存儲(chǔ)單元的號(hào)碼叫做地址。內(nèi)存的地址編號(hào)是由0開(kāi)始的, 地址順序向下編排。例如,后面將要介紹的8086cpu的內(nèi) 存地址是00000hfffffh,共1兆個(gè)存儲(chǔ)單元,簡(jiǎn)稱內(nèi)存 可達(dá)到1兆字節(jié)(1mb)。 第2章微型計(jì)算機(jī)概述 如上所述,存儲(chǔ)單元的地址一般用十六進(jìn)制數(shù)表示, 而每一個(gè)存儲(chǔ)器地址中又存放著一組二進(jìn)制(或用十六進(jìn)制) 表示的數(shù),通常稱為該地址的內(nèi)容。值得注意的是,存儲(chǔ) 單元的地址和地址中的內(nèi)容兩者是不一樣的
5、。前者是存儲(chǔ) 單元的編號(hào),表示存儲(chǔ)器中的一個(gè)位置,而后者表示這個(gè) 位置里存放的數(shù)據(jù)。正如一個(gè)是房間號(hào)碼,另一個(gè)是房間 里住的人一樣。 第2章微型計(jì)算機(jī)概述 3) 系統(tǒng)總線 目前,微型計(jì)算機(jī)都采用總線結(jié)構(gòu)。所謂總線就是用 來(lái)傳送信息的一組通信線。由圖2.1可以看到,系統(tǒng)總線將 構(gòu)成微型機(jī)的各個(gè)部件連接到一起,實(shí)現(xiàn)了微型機(jī)內(nèi)各部 件間的信息交換。由于這種總線在微型機(jī)內(nèi)部,故也將系 統(tǒng)總線稱為內(nèi)總線。 第2章微型計(jì)算機(jī)概述 如圖2.1所示,一般情況下,cpu提供的信號(hào)經(jīng)過(guò)總線 形成電路形成系統(tǒng)總線。概括地說(shuō),系統(tǒng)總線包括地址總 線、數(shù)據(jù)總線和控制總線。這些總線提供了微處理器(cpu) 與存儲(chǔ)器、輸入
6、/輸出接口部件的連接線??梢哉J(rèn)為,一臺(tái) 微型計(jì)算機(jī)就是以cpu為核心,其他部件全都“掛接”在 與cpu相連接的系統(tǒng)總線上,這樣的結(jié)構(gòu)為組成一個(gè)微型 計(jì)算機(jī)帶來(lái)了方便。人們可以根據(jù)自己的需要,將規(guī)模不 一的內(nèi)存和接口接到系統(tǒng)總線上。需要內(nèi)存大、接口多時(shí), 可多接一些;需要少時(shí),少接一些,很容易構(gòu)成各種規(guī)模 的微型機(jī)。 第2章微型計(jì)算機(jī)概述 另外,微型計(jì)算機(jī)與外設(shè)(也包括其他計(jì)算機(jī))的連接 線稱為外總線,也稱為通信總線。它的功能就是實(shí)現(xiàn)計(jì)算 機(jī)與計(jì)算機(jī)或計(jì)算機(jī)與其他外設(shè)的信息傳送。 微型計(jì)算機(jī)工作時(shí),通過(guò)系統(tǒng)總線將指令讀到cpu; cpu的數(shù)據(jù)通過(guò)系統(tǒng)總線寫入內(nèi)存單元;cpu將要輸出的 數(shù)據(jù)經(jīng)系統(tǒng)
7、總線寫到接口,再由接口通過(guò)外總線傳送到外 設(shè);當(dāng)外設(shè)有數(shù)據(jù)時(shí),經(jīng)由外總線傳送到接口,再由cpu 通過(guò)內(nèi)總線讀接口讀到cpu中。 第2章微型計(jì)算機(jī)概述 4) 接口 微型計(jì)算機(jī)廣泛地應(yīng)用于各個(gè)部門和領(lǐng)域,所連接的 外部設(shè)備是各式各樣的。它們不僅要求不同的電平、電流, 而且要求不同的速率,有時(shí)還要考慮是模擬信號(hào),還是數(shù) 字信號(hào)。同時(shí),計(jì)算機(jī)與外部設(shè)備之間還需要詢問(wèn)和應(yīng)答 信號(hào),用來(lái)通知外設(shè)做什么或告訴計(jì)算機(jī)外設(shè)的情況或狀 態(tài)。為了使計(jì)算機(jī)與外設(shè)能夠聯(lián)系在一起,相互匹配并有 條不紊地工作,就需要在計(jì)算機(jī)和外部設(shè)備之間接上一個(gè) 中間部件,以便使計(jì)算機(jī)正常工作,該部件就叫做輸入/輸 出接口。 第2章微型計(jì)
8、算機(jī)概述 為了便于cpu對(duì)接口進(jìn)行讀寫,就必須為接口編號(hào), 稱為接口地址。8086(8088)的接口地址可從0000h到ffffh 編址,共64k。 在圖2.1中,虛線方框內(nèi)的部分構(gòu)成了微型計(jì)算機(jī),方 框以外的部分稱為外部世界。微型計(jì)算機(jī)與外部世界相連 接的各種設(shè)備,統(tǒng)稱外部設(shè)備。 第2章微型計(jì)算機(jī)概述 另外,在微型計(jì)算機(jī)的工程應(yīng)用中所使用的各種開(kāi)關(guān)、 繼電器、步進(jìn)電機(jī)、a/d及d/a變換器等均可看做微型計(jì)算 機(jī)的外部設(shè)備(簡(jiǎn)稱外設(shè))。通過(guò)接口部件,微型機(jī)與外設(shè) 協(xié)調(diào)地工作。接口部件使用很普遍,目前已經(jīng)系列化和標(biāo) 準(zhǔn)化,而且有許多具有可編程序功能,使用方便、靈活, 功能也非常強(qiáng)。根據(jù)所使用的外
9、部設(shè)備,人們可以選擇適 合要求的接口部件與外設(shè)相連。 第2章微型計(jì)算機(jī)概述 2軟件系統(tǒng)軟件系統(tǒng) 在上面的敘述中簡(jiǎn)要地說(shuō)明了構(gòu)成微型計(jì)算機(jī)的硬件 組成部分。但任何微型計(jì)算機(jī)要正常工作,只有硬件是不 夠的,必須配上軟件。只有軟、硬件相互配合,相輔相成, 微型計(jì)算機(jī)才能完成人們所期望的功能。可以這么說(shuō),硬 件是系統(tǒng)的軀體,而軟件(即各種程序的集合)是整個(gè)系統(tǒng) 的靈魂。不配備任何軟件的微型機(jī),人們稱它為物理機(jī)或 裸機(jī)。 第2章微型計(jì)算機(jī)概述 它和剛誕生的嬰兒一樣,只具有有限的基本功能。一 個(gè)嬰兒將來(lái)可能成為一個(gè)偉大的科學(xué)家,也可能成為一個(gè) 無(wú)所事事的人,這主要取決于他本人和社會(huì)如何對(duì)他灌輸 知識(shí)和教育
10、。與此比喻相同,一臺(tái)微型機(jī),如給它配備簡(jiǎn) 單的軟件,它只能做簡(jiǎn)單的工作;如給它配上功能強(qiáng)大的 軟件,它就可以完成復(fù)雜的工作。 微型計(jì)算機(jī)軟件系統(tǒng)包括系統(tǒng)軟件和應(yīng)用軟件兩大類。 第2章微型計(jì)算機(jī)概述 1) 系統(tǒng)軟件 系統(tǒng)軟件用來(lái)對(duì)構(gòu)成微型計(jì)算機(jī)的各部分硬件,如 cpu、內(nèi)存、各種外設(shè)等進(jìn)行管理和協(xié)調(diào),使它們有條不 紊、高效率地工作。同時(shí),系統(tǒng)軟件還為其他程序的開(kāi)發(fā)、 調(diào)試、運(yùn)行提供一個(gè)良好的環(huán)境。 第2章微型計(jì)算機(jī)概述 提到系統(tǒng)軟件,首先就是操作系統(tǒng)。它是由廠家研制 并配置在微型計(jì)算機(jī)上的。一旦微型計(jì)算機(jī)接通電源,就 進(jìn)入操作系統(tǒng)。在操作系統(tǒng)的支持下,實(shí)現(xiàn)人機(jī)交互;在 操作系統(tǒng)的控制下,實(shí)現(xiàn)對(duì)c
11、pu、內(nèi)存和外部設(shè)備的管理 以及各種任務(wù)的調(diào)度與管理。 在操作系統(tǒng)平臺(tái)下運(yùn)行的各種高級(jí)語(yǔ)言、數(shù)據(jù)庫(kù)系統(tǒng)、 各種功能強(qiáng)大的工具軟件以及本書將要講述的c語(yǔ)言和匯 編語(yǔ)言均是系統(tǒng)軟件的組成部分。 在操作系統(tǒng)及其他有關(guān)系統(tǒng)軟件的支持下,微型計(jì)算 機(jī)的用戶可以開(kāi)發(fā)他們的應(yīng)用軟件。 第2章微型計(jì)算機(jī)概述 2) 應(yīng)用軟件 應(yīng)用軟件是針對(duì)不同應(yīng)用、實(shí)現(xiàn)用戶要求的功能軟件。 例如,internet網(wǎng)點(diǎn)上的web頁(yè)、各部門的mis程序、cims 中的應(yīng)用軟件以及微型機(jī)應(yīng)用系統(tǒng)中的各種監(jiān)測(cè)控制程序 等等。 根據(jù)各種應(yīng)用軟件的功能要求,在不同的軟硬件平臺(tái) 上進(jìn)行開(kāi)發(fā)時(shí),可以選用不同的系統(tǒng)軟件支持,例如不同 的操作系統(tǒng)
12、、不同的高級(jí)語(yǔ)言、不同的數(shù)據(jù)庫(kù)等等。應(yīng)用 軟件的開(kāi)發(fā),采用軟件工程的技術(shù)途徑進(jìn)行。 第2章微型計(jì)算機(jī)概述 應(yīng)用軟件一般都由用戶開(kāi)發(fā)完成。用戶可以根據(jù)微型 計(jì)算機(jī)應(yīng)用系統(tǒng)的資源配備情況,確定使用何種語(yǔ)言來(lái)編 寫用戶程序,既可以用高級(jí)語(yǔ)言也可以用匯編語(yǔ)言。高級(jí) 語(yǔ)言功能強(qiáng),且比較接近于人們?nèi)粘I钣谜Z(yǔ)習(xí)慣,因此 比較容易用其編寫程序;而用匯編語(yǔ)言編寫的程序則具有 執(zhí)行速度快、對(duì)端口操作靈活的特點(diǎn)。在當(dāng)前,人們通常 用高級(jí)語(yǔ)言和匯編語(yǔ)言混合編程的方法來(lái)編寫用戶程序。 第2章微型計(jì)算機(jī)概述 2.1.2 微型計(jì)算機(jī)的工作過(guò)程微型計(jì)算機(jī)的工作過(guò)程 如前所述,微型機(jī)在硬件和軟件的相互配合之下才 能工作。如果
13、仔細(xì)觀察微型計(jì)算機(jī)的工作過(guò)程就會(huì)發(fā)現(xiàn), 微型機(jī)為完成某種任務(wù),總是將任務(wù)分解成一系列的基本 動(dòng)作,然后一個(gè)一個(gè)地去完成每一個(gè)基本動(dòng)作。當(dāng)這一任 務(wù)所有的基本動(dòng)作都完成時(shí),整個(gè)任務(wù)也就完成了。這是 計(jì)算機(jī)工作的基本思路。 第2章微型計(jì)算機(jī)概述 cpu進(jìn)行簡(jiǎn)單的算術(shù)運(yùn)算或邏輯運(yùn)算、從存儲(chǔ)器取數(shù)、 將數(shù)據(jù)存放于存儲(chǔ)器、由接口取數(shù)或向接口送數(shù)等,這些 都是一些基本動(dòng)作,也稱為cpu的操作。 盡管cpu的每一種基本操作都很簡(jiǎn)單,但幾百、幾千、 幾十萬(wàn)甚至更多的基本操作組合在一起,就可以完成某種 非常復(fù)雜的任務(wù)??梢哉f(shuō),現(xiàn)代的計(jì)算機(jī)可以完成人們所 能想到的任何工作,這些工作最終就是通過(guò)一系列的簡(jiǎn)單 操作來(lái)
14、實(shí)現(xiàn)的。 第2章微型計(jì)算機(jī)概述 命令微處理器進(jìn)行某種操作的代碼叫做指令。前面已 經(jīng)提到,微處理器只能識(shí)別由0和1電平組成的二進(jìn)制編碼, 因此,指令就是一組由0和1構(gòu)成的數(shù)字編碼。微處理器在 任何一個(gè)時(shí)刻只能進(jìn)行一種操作。為了完成某種任務(wù),就 需把任務(wù)分解成若干種基本操作,明確完成任務(wù)的基本操 作的先后順序,然后用計(jì)算機(jī)可以識(shí)別的指令來(lái)編排完成 任務(wù)的操作順序。計(jì)算機(jī)按照事先編好的操作步驟,每一 步操作都由特定的指令來(lái)指定,一步接一步地進(jìn)行工作, 從而達(dá)到預(yù)期的目的。這種完成某種任務(wù)的一組指令就稱 為程序,計(jì)算機(jī)的工作就是執(zhí)行程序。 第2章微型計(jì)算機(jī)概述 下面通過(guò)一個(gè)簡(jiǎn)單程序的執(zhí)行過(guò)程,對(duì)微型計(jì)
15、算機(jī)的 工作過(guò)程做簡(jiǎn)要介紹。隨著本書的講述,將使讀者對(duì)微型 計(jì)算機(jī)的工作原理逐步加深理解。 用微型計(jì)算機(jī)求解“7+10=?”這樣一個(gè)極為簡(jiǎn)單的 問(wèn)題,必須利用指令告訴計(jì)算機(jī)該做的每一個(gè)步驟,先做 什么,后做什么。具體步驟如下: 7al al+10al 第2章微型計(jì)算機(jī)概述 其含義就是把7這個(gè)數(shù)送到al里面,然后將al中的7和10 相加,把要獲得的結(jié)果存放在al里。把它們變成計(jì)算機(jī)直接 識(shí)別并執(zhí)行的如下程序: 第二條指令 10110000 00000111 00000100 00001010 11110100 第三條指令 第2章微型計(jì)算機(jī)概述 也就是說(shuō),上面的問(wèn)題用3條指令即可解決。這些指 令均
16、用二進(jìn)制編碼來(lái)表示,微型計(jì)算機(jī)可以直接識(shí)別和執(zhí) 行。因此,人們常將這種用二進(jìn)制編碼表示的、cpu能直 接識(shí)別并執(zhí)行的指令稱為機(jī)器代碼或機(jī)器語(yǔ)言。但直接用 這種二進(jìn)制代碼編程序會(huì)給程序設(shè)計(jì)人員帶來(lái)很大的不便。 因?yàn)樗鼈儾缓糜洃?,不直觀,容易出錯(cuò),而且出了錯(cuò)也不 易修改。 第2章微型計(jì)算機(jī)概述 為了克服機(jī)器代碼帶來(lái)的不便,人們用縮寫的英文字 母來(lái)表示指令,它們既易理解又好記憶。人們把這種縮寫 的英文字母叫做助記符。利用助記符加上操作數(shù)來(lái)表示指 令就方便得多了。上面的程序可寫成如下形式: moval,7 add al,10 hlt 程序中第一條指令將7放在al中;第二條指令將al中 的7加上10并將
17、相加之和放在al中;第三條指令是停機(jī)指 令。當(dāng)順序執(zhí)行上述指令時(shí),al中就存放著要求的結(jié)果。 第2章微型計(jì)算機(jī)概述 微型計(jì)算機(jī)在工作之前,必須將用機(jī)器代碼表示的程 序存放在內(nèi)存的某一區(qū)域里。微型機(jī)執(zhí)行程序時(shí),首先通 過(guò)總線將第一條指令取進(jìn)微處理器并執(zhí)行它,然后取第二 條指令,執(zhí)行第二條指令,依次類推。計(jì)算機(jī)就是這樣按 照事先編排好的順序,依次執(zhí)行指令。這里要再次強(qiáng)調(diào), 計(jì)算機(jī)只能識(shí)別機(jī)器代碼,不能識(shí)別助記符。因此,用助 記符編寫的程序必須轉(zhuǎn)換為機(jī)器代碼才能為計(jì)算機(jī)所直接 識(shí)別。有關(guān)這方面的知識(shí),將在下面的章節(jié)中說(shuō)明。 第2章微型計(jì)算機(jī)概述 2.2 8086(8088)cpu 2.2.1 808
18、6(8088)cpu的特點(diǎn)的特點(diǎn) 8086(8088)cpu較同時(shí)代的其他微處理器具有更高的 性能,并在制造過(guò)程中采取了一些特殊的技術(shù)措施。 第2章微型計(jì)算機(jī)概述 1設(shè)置指令預(yù)取隊(duì)列設(shè)置指令預(yù)取隊(duì)列(指令隊(duì)列緩沖器指令隊(duì)列緩沖器) 可以形象地想像8086(8088)cpu集成了兩種功能單元: 總線接口單元(biu)和指令執(zhí)行單元(eu)。前者只管不斷地 從內(nèi)存將指令讀到cpu中,而后者只管執(zhí)行讀來(lái)的指令。 兩者可以同時(shí)進(jìn)行,并行工作。 為此,8086cpu中設(shè)置了一個(gè)6個(gè)字節(jié)的指令預(yù)取隊(duì)列 (8088cpu中的指令預(yù)取隊(duì)列為4個(gè)字節(jié))。指令由biu從內(nèi) 存取出先放在隊(duì)列中,而eu從隊(duì)列中取出指
19、令執(zhí)行。一旦 biu發(fā)現(xiàn)隊(duì)列中空出兩個(gè)字節(jié)以上的位置,它就會(huì)從內(nèi)存 中取指令代碼放到預(yù)取隊(duì)列中,從而提高了cpu執(zhí)行指令 的速度。 第2章微型計(jì)算機(jī)概述 2設(shè)立地址段寄存器設(shè)立地址段寄存器 8086(8088)cpu內(nèi)部的地址線只有16位,因此,能夠 由alu提供的最大地址空間只能為64kb。為了擴(kuò)大它們 的地址寬度,可將存儲(chǔ)器的空間分成若干段,每段為 64kb。另外,在微處理器中還設(shè)立了一些段寄存器,用 來(lái)存放段的起始地址(16位)。8086(8088)微處理器的實(shí)際物 理地址是由段地址和cpu提供的16位偏移地址,按一定規(guī) 律相加而形成的20位地址(a0a19),從而使8086(8088)
20、微 處理器的地址空間擴(kuò)大到1mb。 第2章微型計(jì)算機(jī)概述 3在結(jié)構(gòu)上和指令設(shè)置方面支持多微處理器系統(tǒng)在結(jié)構(gòu)上和指令設(shè)置方面支持多微處理器系統(tǒng) 眾所周知,利用8086(8088)的指令系統(tǒng)進(jìn)行復(fù)雜的運(yùn) 算,如多字節(jié)的浮點(diǎn)運(yùn)算、超越函數(shù)的運(yùn)算等,往往是很 費(fèi)時(shí)間的。為了彌補(bǔ)這一缺陷,當(dāng)時(shí)的cpu設(shè)計(jì)者開(kāi)發(fā)了 專門用于浮點(diǎn)運(yùn)算的協(xié)處理器8087。將8086(8088)和8087 結(jié)合起來(lái),就可以組成運(yùn)算速度很高的處理單元。為此, 8086(8088)在結(jié)構(gòu)和指令方面都已考慮了能與8087相連接 的措施。 第2章微型計(jì)算機(jī)概述 另一方面,為了能用8086(8088)微處理器構(gòu)成一個(gè)共 享總線的多微處理
21、器系統(tǒng)結(jié)構(gòu),以提高微型計(jì)算機(jī)的性能, 同樣,在微處理器的結(jié)構(gòu)和指令系統(tǒng)方面也做了統(tǒng)一考慮。 總之,8086(8088)微處理器不僅將微處理器的內(nèi)部寄 存器擴(kuò)充至16位,從而使尋址能力和算術(shù)邏輯運(yùn)算能力有 了進(jìn)一步提高,而且由于采取了上述一些措施,使得微處 理器的綜合性能與8位微處理器相比有了明顯的提高。 第2章微型計(jì)算機(jī)概述 mx 2.2.2 8086cpu的引線及其功能的引線及其功能 8086 cpu是一塊具有40條引出線的集成電路芯片,其 各引出線的定義如圖2.2所示。為了減少芯片的引線,許多 引線都具有雙重定義和功能,采用分時(shí)復(fù)用方式工作,即 在不同時(shí)刻,這些引線上的信號(hào)是不同的。同時(shí),
22、 8086cpu上有mn/ 輸入引線,用以決定8086cpu工作在 哪種工作模式之下。當(dāng)mn/ =1時(shí),8086cpu工作在最小 模式之下。此時(shí),構(gòu)成的微型機(jī)中只包括一個(gè)8086cpu, 且系統(tǒng)總線由cpu的引線形成,微型機(jī)所用的芯片少。當(dāng) mn/ =0時(shí),8086cpu工作在最大模式之下。 mx mx 第2章微型計(jì)算機(jī)概述 在此模式下,構(gòu)成的微型計(jì)算機(jī)中除了有8086cpu之 外,還可以接另外的cpu(如8087、8089等),構(gòu)成多微處 理器系統(tǒng)。 同時(shí),這時(shí)的系統(tǒng)總線要由8086cpu的引線和總線控 制器(8288)共同形成,可以構(gòu)成更大規(guī)模的系統(tǒng)。 第2章微型計(jì)算機(jī)概述 1最小模式下的
23、引線最小模式下的引線 在最小模式下,8086cpu的引線如圖2.2所示(不包括 括號(hào)內(nèi)的信號(hào))?,F(xiàn)對(duì)各引腳介紹如下: a16a19/s3s6:這是4條時(shí)間復(fù)用、三態(tài)輸出的引線。 在8086cpu執(zhí)行指令過(guò)程中,某一時(shí)刻從這4條線上送出地 址的最高4位a16a19。而在另外時(shí)刻,這4條線送出狀態(tài) s3s6。這些狀態(tài)信息里,s6始終為低,s5指示狀態(tài)寄存 器中的中斷允許標(biāo)志的狀態(tài),它在每個(gè)時(shí)鐘周期開(kāi)始時(shí)被 更新,s4和s3用來(lái)指示cpu現(xiàn)在正在使用的段寄存器,其 信息編碼如表2.1所示。 第2章微型計(jì)算機(jī)概述 圖2.2 8086cpu的引線 第2章微型計(jì)算機(jī)概述 表表2.1 s4、s3的狀態(tài)編碼的
24、狀態(tài)編碼 s4 s3 所代表的段寄存器 0 0 數(shù)據(jù)段寄存器 0 1 堆棧段寄存器 1 0 代碼段寄存器或不使用 1 1 附加段寄存器 第2章微型計(jì)算機(jī)概述 在cpu進(jìn)行輸入/輸出操作時(shí),不使用這4位地址,故 在送出接口地址的時(shí)間里,這4條線的輸出均為低電平。 在一些特殊情況下(如復(fù)位或dma操作時(shí)),這4條線 還可以處于高阻(或浮空、或三態(tài))狀態(tài)。 ad0ad15:它們是地址、數(shù)據(jù)時(shí)分復(fù)用的輸入/輸出 信號(hào)線,其信號(hào)是經(jīng)三態(tài)門輸出的。由于8086微處理器只 有40條引腳,而它的數(shù)據(jù)線為16位,地址線為20位,因此 引線數(shù)不能滿足信號(hào)輸入/輸出的要求。 第2章微型計(jì)算機(jī)概述 于是在cpu內(nèi)部就
25、采用時(shí)分多路開(kāi)關(guān),將16位地址信 號(hào)和16位數(shù)據(jù)信號(hào)綜合后,通過(guò)這16條引腳輸出(或輸入)。 利用定時(shí)信號(hào)來(lái)區(qū)分是數(shù)據(jù)信號(hào)還是地址信號(hào)。通常, cpu在讀/寫存儲(chǔ)器和外設(shè)時(shí),總是先給出存儲(chǔ)器單元的地 址或外設(shè)的端口地址,然后才讀/寫數(shù)據(jù),因而地址和數(shù)據(jù) 在時(shí)序上是有先后的。如果在cpu外部配置一個(gè)地址鎖存 器,在這16條引線出現(xiàn)地址信號(hào)的時(shí)侯把地址信號(hào)鎖存在 鎖存器中,利用鎖存器的輸出去選通存儲(chǔ)器的單元或外設(shè) 端口,那么在下一個(gè)時(shí)序間隔中,這16條引腳就可以作為 數(shù)據(jù)線進(jìn)行數(shù)據(jù)的輸入或輸出操作了。 第2章微型計(jì)算機(jī)概述 m/io:它是cpu的三態(tài)輸出控制信號(hào),用來(lái)區(qū)分當(dāng)前 操作是訪問(wèn)存儲(chǔ)器還是
26、訪問(wèn)i/o端口。若該引腳輸出為低電 平,則訪問(wèn)的是i/o端口;若該引腳輸出為高電平,則訪問(wèn) 的是存儲(chǔ)器。 wr:它是cpu的三態(tài)輸出控制信號(hào)。該引腳輸出為 低電平時(shí),表示cpu正處于寫存儲(chǔ)器或?qū)慽/o端口的狀態(tài)。 第2章微型計(jì)算機(jī)概述 dt/:該引腳是cpu的三態(tài)輸出控制信號(hào),用于確定 數(shù)據(jù)傳送的方向。高電平為發(fā)送方向,即cpu寫數(shù)據(jù)到內(nèi)存 或接口;低電平為接收方向,即cpu到內(nèi)存或接口讀數(shù)據(jù)。 該信號(hào)通常用于數(shù)據(jù)總線驅(qū)動(dòng)器8286/8287(74245)的方向控制。 :這是cpu經(jīng)三態(tài)門輸出的控制信號(hào)。該信號(hào)有效 時(shí),表示數(shù)據(jù)總線上有有效的數(shù)據(jù)。它在每次訪問(wèn)內(nèi)存或接 口以及在中斷響應(yīng)期間有效
27、。它常用做數(shù)據(jù)總線驅(qū)動(dòng)器的片 選信號(hào)。 r den 第2章微型計(jì)算機(jī)概述 ale:三態(tài)輸出控制信號(hào),高電平有效。當(dāng)它有效時(shí), 表明cpu經(jīng)其引線送出有效的地址信號(hào)。因此,它常作為 鎖存控制信號(hào)將a0a19鎖存于地址鎖存器的輸出端。 :它是讀選通三態(tài)輸出信號(hào),低電平有效。當(dāng)其有效 時(shí),表示cpu正在進(jìn)行存儲(chǔ)器或i/o讀操作。 rd 第2章微型計(jì)算機(jī)概述 ready:它是準(zhǔn)備就緒輸入信號(hào),高電平有效。當(dāng) cpu對(duì)存儲(chǔ)器或i/o進(jìn)行操作時(shí),在t3周期開(kāi)始采樣 ready信號(hào)。若為高電平,表示存儲(chǔ)器或i/o設(shè)備已準(zhǔn)備 好;若其為低電平,表明被訪問(wèn)的存儲(chǔ)器或i/o設(shè)備還未準(zhǔn) 備好數(shù)據(jù),則應(yīng)在t3周期以后
28、,插入twait周期(等待周 期),然后在twait周期中再次采樣ready信號(hào),直至 ready變?yōu)橛行?高電平),twait周期才可以結(jié)束,進(jìn)入 t4周期,完成數(shù)據(jù)傳送。 第2章微型計(jì)算機(jī)概述 intr:它是可屏蔽中斷請(qǐng)求輸入信號(hào),高電平有效。 cpu在每條指令執(zhí)行的最后一個(gè)t狀態(tài)采樣該信號(hào),以決 定是否進(jìn)入中斷響應(yīng)周期。這條引腳上的請(qǐng)求信號(hào),可以 用軟件復(fù)位內(nèi)部狀態(tài)寄存器中的中斷允許位(if)加以屏蔽。 :它是可用wait指令對(duì)該引腳進(jìn)行測(cè)試的輸入 信號(hào),低電平有效。當(dāng)該信號(hào)有效時(shí),cpu繼續(xù)執(zhí)行程序; 否則cpu就進(jìn)入等待狀態(tài)(空轉(zhuǎn))。這個(gè)信號(hào)在每個(gè)時(shí)鐘周 期的上升沿由內(nèi)部電路進(jìn)行同步
29、。 test 第2章微型計(jì)算機(jī)概述 nmi:它是屏蔽中斷輸入信號(hào),邊沿觸發(fā),正跳變有 效。這條引腳上的信號(hào)不能用軟件復(fù)位內(nèi)部狀態(tài)寄存器中 的中斷允許位(if)予以屏蔽,所以由低到高的變化將使cpu 在現(xiàn)行指令執(zhí)行結(jié)束后就引起中斷。 reset:它是cpu的復(fù)位輸入信號(hào),高電平有效。為 使cpu完成內(nèi)部復(fù)位過(guò)程,該信號(hào)至少要在4個(gè)時(shí)鐘周期內(nèi) 保持有效。復(fù)位后cpu內(nèi)部寄存器的狀態(tài)如表2.2所示,各 輸出引腳的狀態(tài)如表2.3所示。表2.3中從(s0)到 各引腳均處于浮動(dòng)狀態(tài)。當(dāng)reset返回低電平時(shí),cpu將 重新啟動(dòng)。 intaden 第2章微型計(jì)算機(jī)概述 表表2.2 復(fù)位后的內(nèi)部寄存器狀態(tài)復(fù)位
30、后的內(nèi)部寄存器狀態(tài) 內(nèi)部寄存器 內(nèi) 容 內(nèi)部寄存器 內(nèi) 容 狀態(tài)寄存器 清除 ss寄存器 0000h ip 0000h es寄存器 0000h cs寄存器 ffffh 指令隊(duì)列寄存器 清除 ds寄存器 0000h 第2章微型計(jì)算機(jī)概述 表表2.3 復(fù)位后各引腳的狀態(tài)復(fù)位后各引腳的狀態(tài) 引腳名 狀 態(tài) 引腳名 狀 態(tài) ad0ad7 浮動(dòng) rd 輸出高電平后浮動(dòng) ad8ad15 浮動(dòng) inta 輸出高電平后浮動(dòng) a16 /s3a19 /s6 浮動(dòng) ale 低電平 7 s/bhe 高電平 hlda 低電平 den ( 0s ) 輸出高電平后浮動(dòng) rq / 0 gt 高電平 dt/r ( 1s ) 輸
31、出高電平后浮動(dòng) rq / 1 gt 高電平 m/io( 2s ) 輸出高電平后浮動(dòng) qs0 低電平 wr ( lock ) 輸出高電平后浮動(dòng) qs1 低電平 第2章微型計(jì)算機(jī)概述 :它是cpu輸出的中斷響應(yīng)信號(hào),是cpu對(duì)外部輸 入的intr中斷請(qǐng)求信號(hào)的響應(yīng)。在響應(yīng)中斷過(guò)程中,由引 出端送出兩個(gè)負(fù)脈沖,可用做外部中斷源的中斷向量碼的讀 選通信號(hào)。 hold:它是高電平有效的輸入信號(hào),用于向cpu提出 保持請(qǐng)求。當(dāng)某一部件要占用系統(tǒng)總線時(shí),可通過(guò)這條輸入 線向cpu提出請(qǐng)求。 inta 第2章微型計(jì)算機(jī)概述 hlda:這是cpu對(duì)hold請(qǐng)求的響應(yīng)信號(hào),是高電 平有效的輸出信號(hào)。當(dāng)cpu收到有
32、效的hold信號(hào)后,就 會(huì)對(duì)其做出響應(yīng):一方面使cpu的所有三態(tài)輸出的地址信 號(hào)、數(shù)據(jù)信號(hào)和相應(yīng)的控制信號(hào)變?yōu)楦咦锠顟B(tài)(浮動(dòng)狀態(tài)); 同時(shí)還輸出一個(gè)有效的hlda,表示處理器現(xiàn)在已放棄對(duì) 總線的控制。當(dāng)cpu檢測(cè)到hold信號(hào)變低后,就立即使 hlda變低,同時(shí)恢復(fù)對(duì)總線的控制。 第2章微型計(jì)算機(jī)概述 /s7:它是時(shí)間復(fù)用的三態(tài)輸出信號(hào)。該信號(hào)有 效,用于讀/寫數(shù)據(jù)的高字節(jié) (d8d15),用以保證8086可以一次讀/寫一個(gè)字節(jié)(高 字節(jié)或低字節(jié))或者讀/寫一個(gè)字(16位)。 clk:這是時(shí)鐘信號(hào)輸入端。由它提供cpu和總線控 制器的定時(shí)信號(hào)。8086cpu的標(biāo)準(zhǔn)時(shí)鐘頻率為5mhz。 vcc:
33、它是+5v電源輸入引腳。 gnd:它是接地端。 bhe 第2章微型計(jì)算機(jī)概述 2最大模式下的引線最大模式下的引線 當(dāng)mn/加上低電平時(shí),8086cpu工作在最大模式 之下。此時(shí),除引線24到34這幾條引線之外,其他引線與 最小模式完全相同。如圖2.2所示,圖中括號(hào)內(nèi)的信號(hào)就是 最大模式下重新定義的信號(hào)。 ,:這是最大模式下由8086cpu經(jīng)三態(tài)門 輸出的狀態(tài)信號(hào)。這些狀態(tài)信號(hào)加到intel公司同時(shí)提供的 總線控制器(8288)上,可以產(chǎn)生系統(tǒng)總線所需要的各種控 制信號(hào)。,的狀態(tài)編碼表示某時(shí)刻8086cpu的狀 態(tài),其編碼如表2.4所示。 mx 1s2s0s 1s2s0s 第2章微型計(jì)算機(jī)概述
34、從表2.4可以看到,當(dāng)8086cpu進(jìn)行不同操作時(shí),其 輸出的s2s0的狀態(tài)是不一樣的。因此,可以簡(jiǎn)單地理解 為8288對(duì)這些狀態(tài)進(jìn)行譯碼,產(chǎn)生相應(yīng)的控制信號(hào)。 在本章的后面可以看到,8288總線控制器利用s2s0 為構(gòu)成系統(tǒng)總線提供了足夠的控制信號(hào)。 第2章微型計(jì)算機(jī)概述 表 2.4 0s 2s 的狀態(tài)編碼 2s 1s 0s 性 能 0 0 0 中斷響應(yīng) 0 0 1 讀 i/o 端口 0 1 0 寫 i/o 端口 0 1 1 暫停 1 0 0 取指 1 0 1 讀存儲(chǔ)器 1 1 0 寫存儲(chǔ)器 1 1 1 無(wú)作用 第2章微型計(jì)算機(jī)概述 / ,/:它們是總線請(qǐng)求/允許引腳。每 一個(gè)引腳都具有雙向
35、功能,既是總線請(qǐng)求輸入也是總線響 應(yīng)輸出。但是/比/具有更高的優(yōu)先權(quán)。這 些引腳內(nèi)部都有上拉電阻,所以在不使用時(shí)可以懸空。正 常使用時(shí)的工作順序大致如下: 由其他的總線控制設(shè)備(例如數(shù)字協(xié)處理器8087) 產(chǎn)生寬度為一個(gè)時(shí)鐘周期的負(fù)向的總線請(qǐng)求脈沖,將它送 給rq/gt引腳,相當(dāng)于hold信號(hào)。 rq 0gt rq 1gt rq 0gt rq 1gt 第2章微型計(jì)算機(jī)概述 cpu檢測(cè)到這個(gè)請(qǐng)求后,在下一個(gè)t4或t1期間, 在同一個(gè)引腳輸出寬度為一個(gè)時(shí)鐘周期的負(fù)向脈沖給請(qǐng)求 總線的設(shè)備,作為總線響應(yīng)信號(hào),相當(dāng)于hlda信號(hào)。這樣 從下一個(gè)時(shí)鐘周期開(kāi)始,cpu就釋放總線,總線請(qǐng)求設(shè)備 便可以利用總
36、線完成某種操作。 總線請(qǐng)求設(shè)備在對(duì)總線操作結(jié)束后,再產(chǎn)生一個(gè)寬 度為一個(gè)時(shí)鐘周期的負(fù)向脈沖,通過(guò)該引腳送給cpu,它 表示總線請(qǐng)求已結(jié)束。cpu檢測(cè)到該結(jié)束信號(hào)后,從下一 個(gè)時(shí)鐘周期開(kāi)始又重新控制總線,繼續(xù)執(zhí)行剛才因其他總 線設(shè)備請(qǐng)求總線而暫時(shí)停止的操作。 第2章微型計(jì)算機(jī)概述 :它是一個(gè)總線封鎖信號(hào),低電平有效。該信號(hào) 有效時(shí),別的總線控制設(shè)備的總線請(qǐng)求信號(hào)將被封鎖,不 能獲得對(duì)系統(tǒng)總線的控制。信號(hào)由前綴指令 “l(fā)ock”使其有效,直至下一條指令執(zhí)行完畢。 qs1,qs0:它們是cpu輸出的隊(duì)列狀態(tài)信號(hào)。根據(jù)該 狀態(tài)信號(hào)輸出,從外部可以跟蹤cpu內(nèi)部的指令隊(duì)列。 qs1,qs0的編碼如表2.
37、5所示。隊(duì)列狀態(tài)在clk周期期間 有效。 lock lock 第2章微型計(jì)算機(jī)概述 表表2.5 qs0,qs1的狀態(tài)編碼的狀態(tài)編碼 qs1 qs0 性 能 0 0 無(wú)操作 0 1 隊(duì)列中操作碼的第一個(gè)字節(jié) 1 0 隊(duì)列空 1 1 隊(duì)列中非第一個(gè)操作碼字節(jié) 第2章微型計(jì)算機(jī)概述 2.2.3 8088cpu的引線及其功能的引線及其功能 8086cpu和8088cpu的內(nèi)部總線及內(nèi)部寄存器均為16 位,是完全相同的。但是,8088cpu的外部數(shù)據(jù)線是8位 的,即ad0ad7,每一次傳送數(shù)據(jù)只能是8位。而 8086cpu是真正的16位處理器,每一次傳送數(shù)據(jù)既可以是 16位也可以是8位(高8位或低8位)
38、的。它們有相同的內(nèi)部寄 存器和指令系統(tǒng),在軟件上是互相兼容的。8088 cpu的引 線如圖2.3所示。 第2章微型計(jì)算機(jī)概述 圖2.3 8088cpu引線 第2章微型計(jì)算機(jī)概述 對(duì)照?qǐng)D2.2和圖2.3,可以發(fā)現(xiàn)它們之間的主要不同表現(xiàn) 在引線上: (1) 由于8088 cpu外部一次只傳送8位數(shù)據(jù),因此其引 線a8a15僅用于輸出地址信號(hào)。而8086則將此8條線變?yōu)殡p 向分時(shí)復(fù)用的ad8ad15,即某一時(shí)刻送出地址a8a15, 而另一時(shí)刻則用這8條線傳送數(shù)據(jù)的高8位d8d15。在進(jìn)行 16位數(shù)據(jù)操作時(shí),8088cpu一定需要兩個(gè)總線周期才能完成 16位數(shù)據(jù)操作,而8086cpu可能只用一個(gè)總線周
39、期、一次總 線操作就可完成。因此,8086的速度較8088要快一些。 第2章微型計(jì)算機(jī)概述 (2) 8086cpu上的/s7信號(hào)在8088上變?yōu)?(high)信號(hào)。這是一條狀態(tài)輸出線。它與io/和dt/ 信號(hào)一起,決定了8088cpu在最小模式下現(xiàn)行總線周期的狀 態(tài)。它們的不同電平所表示的處理器操作情況如表2.6所示。 bhe 0ss mr 第2章微型計(jì)算機(jī)概述 表 2.6 io/ m ,dt/r , 0 ss 狀態(tài)編碼 io/ m dt/r 0 ss 性 能 1 0 0 中斷響應(yīng) 1 0 1 讀 i/o 端口 1 1 0 寫 i/o 端口 1 1 1 暫停 0 0 0 取指 0 0 1 讀存
40、儲(chǔ)器 0 1 0 寫存儲(chǔ)器 0 1 1 無(wú)作用 第2章微型計(jì)算機(jī)概述 high:在最大模式時(shí)始終為高電平輸出。 (3) 8088的引線28是io/,即cpu訪問(wèn)內(nèi)存時(shí)該引線 輸出低電平;訪問(wèn)接口時(shí)則輸出高電平。對(duì)8086而言,該引 線的狀態(tài)剛好相反,即變?yōu)閙/。 當(dāng)然,兩者內(nèi)部的指令預(yù)取隊(duì)列長(zhǎng)度不一樣,這在前面 已經(jīng)提到,8088cpu為4個(gè)字節(jié)而8086cpu為6個(gè)字節(jié)。從應(yīng) 用的角度來(lái)說(shuō),這一不同并不重要。 m io 第2章微型計(jì)算機(jī)概述 2.2.4 8086cpu的內(nèi)部結(jié)構(gòu)的內(nèi)部結(jié)構(gòu) 上面已經(jīng)說(shuō)明了關(guān)于8086cpu的引線及功能。要特別 強(qiáng)調(diào)的是從工程應(yīng)用來(lái)說(shuō),為了便于以后硬件連接,構(gòu)成
41、 系統(tǒng),讀者在學(xué)習(xí)任何集成芯片時(shí)(包括這里的8086cpu), 都必須仔細(xì)弄清它們的引線,以便使用時(shí)順利地連接。至 于芯片的內(nèi)部結(jié)構(gòu),由于芯片集成度的提高,讀者不可能 也不必要弄清其結(jié)構(gòu)細(xì)節(jié),只要對(duì)它們有最低限度的了解, 滿足以后工程應(yīng)用的需要也就足夠了。 18086cpu的內(nèi)部結(jié)構(gòu)的內(nèi)部結(jié)構(gòu) 8086微處理器內(nèi)部分為兩個(gè)部分:執(zhí)行單元(eu)和總 線接口單元(biu),如圖2.4所示。 第2章微型計(jì)算機(jī)概述 圖2.4 8086(8088)微處理器的內(nèi)部結(jié)構(gòu) 第2章微型計(jì)算機(jī)概述 eu負(fù)責(zé)指令的執(zhí)行。它包括alu(運(yùn)算器)、通用寄存 器和狀態(tài)寄存器等,主要進(jìn)行16位的各種運(yùn)算及有效地址 的計(jì)算
42、。 biu負(fù)責(zé)與存儲(chǔ)器和i/o設(shè)備的接口。它由段寄存器、 指令指針、地址加法器和指令隊(duì)列緩沖器組成。地址加法 器將段和偏移地址相加,生成20位的物理地址。 第2章微型計(jì)算機(jī)概述 前面已經(jīng)提到,在8086微處理器中,取指令和執(zhí)行指令 是可以在時(shí)間上重疊的,也就是說(shuō),總線接口單元的操作與 執(zhí)行單元的操作是完全不同步的。通常,由biu將指令先讀 入到指令隊(duì)列緩沖器中。若此時(shí)執(zhí)行單元?jiǎng)偤靡髮?duì)存儲(chǔ)器 或i/o設(shè)備進(jìn)行操作,那么在執(zhí)行中的取指存儲(chǔ)周期結(jié)束后, 下一個(gè)周期將執(zhí)行執(zhí)行單元所要求的存儲(chǔ)器操作或i/o操作。 只要指令隊(duì)列緩沖器不滿,而且執(zhí)行單元沒(méi)有存儲(chǔ)器或i/o 操作要求,biu總是要到存儲(chǔ)器中
43、去取后續(xù)的指令。當(dāng)4個(gè)字 節(jié)的指令隊(duì)列緩沖器滿時(shí),且執(zhí)行單元又沒(méi)有存儲(chǔ)器或i/o 操作請(qǐng)求時(shí),總線接口單元將進(jìn)入空閑狀態(tài)。在執(zhí)行轉(zhuǎn)移、 調(diào)用、返回指令時(shí),指令隊(duì)列緩沖器的內(nèi)容將被清除。 第2章微型計(jì)算機(jī)概述 28086處理器中的內(nèi)部寄存器處理器中的內(nèi)部寄存器 在8086處理器中,用戶能用指令改變其內(nèi)容的主要 是一組內(nèi)部寄存器,其結(jié)構(gòu)如圖2.5所示。 第2章微型計(jì)算機(jī)概述 圖2.5 8086cpu內(nèi)部寄存器 第2章微型計(jì)算機(jī)概述 1) 數(shù)據(jù)寄存器 8086有4個(gè)16位的數(shù)據(jù)寄存器,可以存放16位的操作 數(shù)。其中ax為累加器,其他3個(gè)盡管也可以存放16位操 作數(shù),但它們的用途都有區(qū)別,具體說(shuō)明如表
44、2.7所示。 第2章微型計(jì)算機(jī)概述 表表2.7 數(shù)據(jù)寄存器的一些專門用途數(shù)據(jù)寄存器的一些專門用途 寄存器 用 途 ax 字乘法,字除法,字 i/o al 字節(jié)乘,字節(jié)除,字節(jié) i/o,轉(zhuǎn)移,十進(jìn)制算術(shù)運(yùn)算 ah 字節(jié)乘法,字節(jié)除法 bx 轉(zhuǎn)移 cx 串操作,循環(huán)次數(shù) cl 變量移位或循環(huán)控制 dx 字乘法,字除法,間接 i/o 第2章微型計(jì)算機(jī)概述 從圖2.5中可以看到,4個(gè)16位的寄存器在需要時(shí),可分 為8個(gè)8位寄存器來(lái)用,這樣就大大增加了使用的靈活性。 2) 指針寄存器 8086的指針寄存器有兩個(gè):sp和bp。sp是堆棧指針寄 存器,由它和堆棧段寄存器一起來(lái)確定堆棧在內(nèi)存中的位 置。bp是
45、基數(shù)指針寄存器,通常用于存放基地址,以使 8086的尋址更加靈活。 第2章微型計(jì)算機(jī)概述 3) 變址寄存器 8086的變址寄存器有兩個(gè):si和di。si是源變址寄存 器,di是目的變址寄存器,它們都用于指令的變址尋址。 顧名思義,si通常指向源操作數(shù),di通常指向目的操作數(shù)。 4) 控制寄存器 8086的控制寄存器有兩個(gè):ip和psw。ip是指令指針 寄存器,用來(lái)控制cpu的指令執(zhí)行順序。它和代碼寄存器 cs一起可以確定當(dāng)前所要取的指令的內(nèi)存地址。cpu執(zhí)行 程序的地址總是為cs16+ip。當(dāng)順序執(zhí)行程序時(shí),cpu 每從內(nèi)存取一個(gè)指令字節(jié),ip自動(dòng)加1,指向下一個(gè)要讀取 的指令。 第2章微型計(jì)
46、算機(jī)概述 當(dāng)cs不變、ip單獨(dú)改變時(shí),會(huì)發(fā)生段內(nèi)程序轉(zhuǎn)移;當(dāng)cs 和ip同時(shí)改變時(shí),會(huì)發(fā)生段間程序轉(zhuǎn)移。 psw是程序狀態(tài)字,也有人稱它為狀態(tài)寄存器或標(biāo)志寄 存器,它用來(lái)存放8086cpu在工作過(guò)程中的狀態(tài)。psw各位 標(biāo)志如圖2.6所示。 第2章微型計(jì)算機(jī)概述 圖2.6 狀態(tài)寄存器 第2章微型計(jì)算機(jī)概述 標(biāo)志寄存器是一個(gè)16位的寄存器,空著的各位暫未使 用。8086中所用的9位對(duì)了解8086cpu的工作和用匯編語(yǔ)言 編寫程序是很重要的。這些標(biāo)志位的含義如下: c進(jìn)位標(biāo)志位。做加法時(shí)出現(xiàn)進(jìn)位或做減法時(shí)出現(xiàn)借 位,該標(biāo)志位置1;否則清0。位移和循環(huán)指令也影響進(jìn)位 標(biāo)志。 p奇偶標(biāo)志位。當(dāng)結(jié)果的低
47、8位中1的個(gè)數(shù)為偶數(shù)時(shí), 則該標(biāo)志位置1;否則清0。 第2章微型計(jì)算機(jī)概述 a半加標(biāo)志位。做加法時(shí),當(dāng)位3需向位4進(jìn)位, 或做減法時(shí)位3需向位4借位時(shí),該標(biāo)志位置1;否則清0。 該標(biāo)志位通常用于對(duì)bcd算術(shù)運(yùn)算結(jié)果的調(diào)整。 z零標(biāo)志位。運(yùn)算結(jié)果所有位均為0時(shí),該標(biāo)志位 置1;否則清0。 s符號(hào)標(biāo)志位。當(dāng)運(yùn)算結(jié)果的最高位為1時(shí),該 標(biāo)志位置1;否則清0。 第2章微型計(jì)算機(jī)概述 t陷阱標(biāo)志位(單步標(biāo)志位)。當(dāng)該位置1時(shí),將使 8086執(zhí)行單步指令工作方式。在每條指令執(zhí)行結(jié)束時(shí), cpu總是去測(cè)試t標(biāo)志位是否為1。如果為1,那么在本指 令執(zhí)行后將產(chǎn)生陷阱中斷,從而執(zhí)行陷阱中斷處理程序。 該中斷處理程
48、序的首地址由內(nèi)存的00004h00007h 4個(gè) 單元提供。該標(biāo)志位通常用于程序的調(diào)試。例如,系統(tǒng) 調(diào)試軟件debug中的t命令,就是利用它來(lái)進(jìn)行程序的 單步跟蹤的。 第2章微型計(jì)算機(jī)概述 i中斷允許標(biāo)志位。如果該位置1,則處理器可以響 應(yīng)可屏蔽中斷請(qǐng)求;否則就不能響應(yīng)可屏蔽中斷請(qǐng)求。 d方向標(biāo)志位。當(dāng)該位置1時(shí),串操作指令為自動(dòng) 減量指令,即從高地址到低地址處理字符串;否則串操 作指令為自動(dòng)增量指令。 o溢出標(biāo)志位。在算術(shù)運(yùn)算中,帶符號(hào)數(shù)的運(yùn)算結(jié) 果超出了8位或16位帶符號(hào)數(shù)所能表達(dá)的范圍,即字節(jié)運(yùn) 算大于+127或小于-128時(shí),字運(yùn)算大于+32 767或小于- 32768時(shí),該標(biāo)志位置位
49、。 第2章微型計(jì)算機(jī)概述 5) 段寄存器 8086微處理器具有4個(gè)段寄存器:代碼段寄存器cs、 數(shù)據(jù)段寄存器ds、堆棧段寄存器ss和附加段寄存器es。 這些段寄存器的內(nèi)容與有效的地址偏移量一起可確定內(nèi) 存的物理地址。通常cs規(guī)定并控制程序區(qū),ds和es控制 數(shù)據(jù)區(qū),ss控制堆棧區(qū)。 第2章微型計(jì)算機(jī)概述 2.2.5 存儲(chǔ)器尋址存儲(chǔ)器尋址 對(duì)只學(xué)過(guò)8位微處理器的讀者來(lái)說(shuō),存儲(chǔ)器的段、段 寄存器、段內(nèi)偏移地址等都是過(guò)去未涉及的新概念。要 想弄清楚為什么8086能尋址1mb的內(nèi)存空間,并知道如 何確定實(shí)際的物理地址,這一切都要求讀者必須徹底理 解這些概念及相互的關(guān)系。只有做到了這一點(diǎn),才能正 確地組
50、織存儲(chǔ)器和使用存儲(chǔ)器。 第2章微型計(jì)算機(jī)概述 1由段寄存器、段偏移地址確定物理地址圖由段寄存器、段偏移地址確定物理地址圖2.7 物物 理地址的形成理地址的形成 在本節(jié)開(kāi)始我們已經(jīng)提到,8086可以具有1mb的內(nèi) 存空間,可是內(nèi)部寄存器只有16位,很顯然,不采取特 殊措施,是不能尋址1mb存儲(chǔ)空間的。為此引入了分段 的概念。每個(gè)段具有64kb的存儲(chǔ)空間。段內(nèi)的物理地址 由16位的段寄存器內(nèi)容和16位的地址偏移量來(lái)確定。 第2章微型計(jì)算機(jī)概述 圖2.7 物理地址的形成 第2章微型計(jì)算機(jī)概述 如圖2.7所示,20位的物理地址是這樣產(chǎn)生的: 物理地址=段寄存器的內(nèi)容16+偏移地址 段寄存器的內(nèi)容16(
51、相當(dāng)于左移4位)變?yōu)?0位,再在 低端16位上加上偏移地址(也叫做有效地址ea),便可得到 20位物理地址。 對(duì)于cpu讀程序的內(nèi)存地址,總是由下式來(lái)決定: 讀程序的內(nèi)存物理地址=cs16+ip 第2章微型計(jì)算機(jī)概述 由此可以知道,當(dāng)8086(8088)cpu復(fù)位啟動(dòng)時(shí)的復(fù)位啟動(dòng) 地址(復(fù)位入口地址)可如下確定:由于復(fù)位時(shí)cs=ffffh,而 ip=0000h,則有 復(fù)位啟動(dòng)地址=cs16+ip=ffff0h+0000h=ffff0h 也就是說(shuō),當(dāng)8086(8088)cpu讀程序時(shí),其內(nèi)存地址永遠(yuǎn) 是由代碼段(cs)寄存器16與ip(指令指針)的內(nèi)容作為偏移地 址來(lái)決定的。 但是,當(dāng)8086(
52、8088)cpu讀/寫內(nèi)存數(shù)據(jù)時(shí),ds、ss和es 三個(gè)段寄器均可使用,而偏移地址又有多種不同的產(chǎn)生方法, 有關(guān)內(nèi)容將在下面的章節(jié)中做詳細(xì)說(shuō)明。 第2章微型計(jì)算機(jī)概述 2段寄存器的使用段寄存器的使用 段寄存器的設(shè)立不僅使8086(8088)的存儲(chǔ)空間擴(kuò)大到 1mb,而且為信息按特征分段存儲(chǔ)帶來(lái)了方便。在存儲(chǔ)器 中,信息按特征可分為程序代碼、數(shù)據(jù)、微處理器狀態(tài)等。 為了操作方便,存儲(chǔ)器可以相應(yīng)地劃分為:程序區(qū),用來(lái) 存放程序的指令代碼;數(shù)據(jù)區(qū),用來(lái)存放原始數(shù)據(jù)、中間 結(jié)果和最后運(yùn)算結(jié)果;堆棧區(qū),用來(lái)存放壓入堆棧的數(shù)據(jù) 和狀態(tài)信息。只要修改段寄存器的內(nèi)容,就可以將相應(yīng)的 存放區(qū)設(shè)置在內(nèi)存存儲(chǔ)空間的
53、任何位置上。這些區(qū)域可以 通過(guò)段寄存器的設(shè)置使之相互獨(dú)立,也可將它們部分或完 全重疊。需要注意的是,改變這些區(qū)域的地址時(shí),是以16 個(gè)字節(jié)為單位進(jìn)行的。圖2.8表示了各段寄存器的使用情況。 第2章微型計(jì)算機(jī)概述 圖2.8 段寄存器的使用情況 第2章微型計(jì)算機(jī)概述 在8086cpu中,對(duì)不同類型存儲(chǔ)器的訪問(wèn)所使用的段寄 存器和相應(yīng)的偏移地址的來(lái)源做了一些具體規(guī)定。它們的基 本約定如表2.8所示。 第2章微型計(jì)算機(jī)概述 表表2.8 段寄存器使用時(shí)的一些基本約定段寄存器使用時(shí)的一些基本約定 訪問(wèn)存儲(chǔ)器 類 型 默認(rèn)存儲(chǔ)器 類型 可指定 段存儲(chǔ)器 段內(nèi)偏移 地址來(lái)源 取指令碼 cs 無(wú) ip 堆棧操作
54、 ss 無(wú) sp 串操作源地址 ds cs,es,ss si 串操作目的地址 es 無(wú) di bp 用作基址寄存器 ss cs,ds,es 依尋址方式求得有效地址 一般數(shù)據(jù)存取 ds cs,es,ss 依尋址方式求得有效地址 第2章微型計(jì)算機(jī)概述 下面對(duì)表2.8中的內(nèi)容做簡(jiǎn)要說(shuō)明。 (1) 在各種類型的存儲(chǔ)器訪問(wèn)中,其段地址要么由“默 認(rèn)”的段寄存器提供,要么由“指定”的段寄存器提供。所 謂默認(rèn)段寄存器是指在指令中不用專門的信息來(lái)指定使用某 一個(gè)段寄存器的情況,這時(shí)就由默認(rèn)段寄存器來(lái)提供訪問(wèn)內(nèi) 存的段地址。在實(shí)際進(jìn)行程序設(shè)計(jì)時(shí),絕大部分都屬于這一 種情況。在某幾種訪問(wèn)存儲(chǔ)器的類型中,允許由指令
55、來(lái)指定 使用另外的段寄存器,這樣可為訪問(wèn)不同的存儲(chǔ)器段提供方 便。這種指定通常是靠在指令碼中增加一個(gè)字節(jié)的前綴來(lái)實(shí) 現(xiàn)的。有些類型的存儲(chǔ)器訪問(wèn)不允許指定另一個(gè)段寄存器。 第2章微型計(jì)算機(jī)概述 (2) 段寄存器ds、es和ss的內(nèi)容是用傳送指令送入的, 但任何傳送指令都不能向代碼段寄存器cs送數(shù)。在后面的 宏匯編中將講到,偽指令assume及jmp、call、ret、 int和iret等指令可以設(shè)置和影響cs的內(nèi)容。更改段寄存 器的內(nèi)容意味著存儲(chǔ)區(qū)的移動(dòng)。這說(shuō)明無(wú)論程序區(qū)、數(shù)據(jù) 區(qū)還是堆棧區(qū)都可以超過(guò)64kb的容量,都可以利用重新設(shè) 置段寄存器內(nèi)容的方法加以擴(kuò)大,而且各存儲(chǔ)區(qū)都可以在 整個(gè)存儲(chǔ)空
56、間中移動(dòng)。 第2章微型計(jì)算機(jī)概述 (3) 表中“段內(nèi)偏移地址”一欄指明,除了有兩種類 型訪問(wèn)存儲(chǔ)器是“依尋址方式來(lái)求得有效地址”外,其 他都指明使用一個(gè)16位的指針寄存器或變址寄存器。例 如,在取指令訪問(wèn)內(nèi)存時(shí),段內(nèi)偏移地址只能由指令指 針寄存器ip來(lái)提供;在堆棧進(jìn)行壓入或彈出操作時(shí),段 內(nèi)偏移地址只能由sp提供;在字符串操作時(shí),源地址和 目的地址中的段內(nèi)偏移地址分別由si和di提供。除上述 情況以外,為存取操作數(shù)而訪問(wèn)內(nèi)存時(shí),將依不同尋址 方式求得段內(nèi)偏移地址。 第2章微型計(jì)算機(jī)概述 2.2.6 8086cpu的工作時(shí)序的工作時(shí)序 1指令周期與其他周期指令周期與其他周期 前面已經(jīng)提到,由指令
57、集合而成的程序放在內(nèi)存中, cpu從內(nèi)存中將指令逐條讀出并執(zhí)行。將cpu完整地執(zhí) 行一條指令所花的時(shí)間叫做一個(gè)指令周期。在后面的章 節(jié)中可以看到,有的指令很簡(jiǎn)單,執(zhí)行時(shí)間比較短,而 有的指令很復(fù)雜,其執(zhí)行的時(shí)間比較長(zhǎng),但都稱為一個(gè) 指令周期,只不過(guò)時(shí)間長(zhǎng)短不同而已。 第2章微型計(jì)算機(jī)概述 如果再細(xì)分,一個(gè)指令周期還可以分成若干個(gè)總線 周期,即一條指令是由若干個(gè)總線周期來(lái)完成的。那么 什么是總線周期呢?8086cpu通過(guò)其系統(tǒng)總線對(duì)存儲(chǔ)器 或接口進(jìn)行一次訪問(wèn)所需的時(shí)間稱為一個(gè)總線周期。這 里主要是指8086cpu將一個(gè)字節(jié)寫入一個(gè)內(nèi)存單元或一 個(gè)接口地址,或者8086cpu由內(nèi)存或接口讀出一個(gè)字
58、節(jié) 到cpu的時(shí)間,均為一個(gè)總線周期。 在正常情況下,一個(gè)總線周期由4個(gè)時(shí)鐘周期組成。 時(shí)鐘周期就是前面提到的加在cpu芯片引腳clk上的時(shí) 鐘信號(hào)的周期。 第2章微型計(jì)算機(jī)概述 可以看到,一條指令是由若干個(gè)總線周期來(lái)完成的, 而一個(gè)總線周期又由4個(gè)(正常情況)時(shí)鐘周期來(lái)實(shí)現(xiàn),從 而建立了指令周期、總線周期和時(shí)鐘周期的關(guān)系。 2幾種基本時(shí)序幾種基本時(shí)序 1) 寫總線周期 寫總線周期如圖2.9所示。 第2章微型計(jì)算機(jī)概述 圖2.9 8086的寫總線周期 第2章微型計(jì)算機(jī)概述 這里以8086的最小模式下的信號(hào)時(shí)序?yàn)槔秊檎f(shuō)明問(wèn)題。 在最大模式下,控制信號(hào)由總線控制器(8288)來(lái)產(chǎn)生,但 在概念及基
59、本時(shí)間關(guān)系上是一樣的。讀者只要理解了任何 一種時(shí)序,就足以解決具體的工程問(wèn)題。 首先,以cpu向內(nèi)存寫入一個(gè)字節(jié)的總線周期為例來(lái) 簡(jiǎn)要說(shuō)明。該總線周期從第一個(gè)時(shí)鐘周期t1開(kāi)始,在t1時(shí) 刻cpu從a16a19/s3s6和/s7這5條引線上送出 a16a19及,并從ad0ad15這16條線上送出a0a15。 bhebhe 第2章微型計(jì)算機(jī)概述 可見(jiàn),在這個(gè)時(shí)鐘周期里,cpu從它的21條引線上送 出了21位地址信號(hào)a0a19和(可以將看成一個(gè) 地址信號(hào)),而且時(shí)鐘t1之后,這21條線上的信號(hào)將變?yōu)槠?他信號(hào)。因此,cpu在t1周期里送出ale地址鎖存信號(hào),可 以用這個(gè)信號(hào)將a0a19及鎖存在鎖存器
60、中,使地址信號(hào)在 整個(gè)總線周期里保持不變。在此t1期間,cpu由m/送 出高電平并在整個(gè)總線周期中一直維持高電平不變,表示 該總線周期是一個(gè)尋址內(nèi)存的總線周期。 bhebhe io 第2章微型計(jì)算機(jī)概述 在時(shí)鐘周期t2里,cpu將寫入內(nèi)存的數(shù)據(jù)從ad0ad7 上送出來(lái),加到數(shù)據(jù)總線d0d7上。同時(shí)cpu還會(huì)送出 控制信號(hào),在地址信號(hào)a0a19、io/及的共同作用 下,將d0d7上的數(shù)據(jù)寫入相應(yīng)的內(nèi)存單元中。寫入內(nèi)存的 操作通常是在的后沿(其上升沿)來(lái)實(shí)現(xiàn)的。這時(shí)的地址、 數(shù)據(jù)信號(hào)均已穩(wěn)定,寫操作的工作也就更加可靠。 m wr wr wr 第2章微型計(jì)算機(jī)概述 以上就是在最小模式下正常的內(nèi)存寫入
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 腫瘤學(xué)典型病例診療全流程解析
- 住院醫(yī)師規(guī)范化培訓(xùn)病例討論
- 生物線上培訓(xùn)課件
- 育嬰員保健與護(hù)理
- 心肌梗死護(hù)理質(zhì)量改進(jìn)項(xiàng)目
- 培訓(xùn)行業(yè)公司簡(jiǎn)介
- 工廠培訓(xùn)內(nèi)容總結(jié)
- 肝癌患者人文關(guān)懷護(hù)理
- 原輔料檢驗(yàn)培訓(xùn)課件
- 臨床實(shí)踐護(hù)理的倫理道德
- 合伙人退出協(xié)議書
- (高清版)DZT 0208-2020 礦產(chǎn)地質(zhì)勘查規(guī)范 金屬砂礦類
- 大件吊裝運(yùn)輸企業(yè)信息化建設(shè)愿景
- 2024年春江蘇開(kāi)放大學(xué)先進(jìn)制造技術(shù)第一次過(guò)程性考核作業(yè)答案
- 2019版新人教版高中英語(yǔ)必修+選擇性必修共7冊(cè)詞匯表匯總(帶音標(biāo))
- FANUC數(shù)控系統(tǒng)連接與調(diào)試實(shí)訓(xùn) 課件全套 第1-8章 FANUC 0iD硬件結(jié)構(gòu)與連接-主軸控制
- 擴(kuò)心病的健康宣教
- 日常網(wǎng)絡(luò)安全檢查記錄表模板
- 公務(wù)員午休管理制度
- 歷史課堂中的信息化教學(xué)設(shè)計(jì)方案
- 大腸癌的診治及預(yù)防措施
評(píng)論
0/150
提交評(píng)論