-
- 素材大。
- 1007.00 MB
- 素材授權:
- 免費下載
- 素材格式:
- .ppt
- 素材上傳:
- ppt
- 上傳時間:
- 2018-05-10
- 素材編號:
- 116493
- 素材類別:
- 學校PPT
-
素材預覽
這是一個關于機械工程制圖PPT課件,主要介紹微型計算機結構的簡化形式、指令系統(tǒng)、程序設計、執(zhí)行指令的例行程序。微型計算機這種基本功能從電路原理來理解就是信息在各個部件間的流通問題。在第2章中已講到總線結構及信息流通的過程,在整個微型計算機中、信息量是很大的,部件數(shù)也是很多的,如何做到各個信息和部件之間能夠“循序漸進、各得其所、有條不紊、快而不亂”呢?這就是微型計算機基本工作原理所要解答的問題。本章將以一個簡化了的微型計算機作為分析對象,逐步講述一般計算機的各種基本功能,從而概括出微型計算機的基本工作原理。在分析過程中,陸續(xù)介紹各個基本電路和部件之間的信息流通過程,指令系統(tǒng)的意義,程序設計的步驟,控制部件的功能及其結構,還有控制矩陣產(chǎn)生控制字的過程等等,同時對例行程序作較詳細的闡述。這樣就可以對微型計算機的基本工作原理有一個比較完整的概念,歡迎點擊下載機械工程制圖PPT課件哦。
機械工程制圖PPT課件是由紅軟PPT免費下載網(wǎng)推薦的一款學校PPT類型的PowerPoint.
第3章 微型計算機的基本工作原理 3.1 微型計算機結構的簡化形式 3.2 指令系統(tǒng) 3.3 程序設計 3.4 執(zhí)行指令的例行程序 3.5 控制部件 3.6 微型計算機功能的擴展 3.7 初級程序設計舉例 3.8 控制部件的擴展 3.9 現(xiàn)代技術在微型計算機中的應用習題 一個實際的微型計算機的電路結構是相當復雜的。要了解其工作原理就必須將其分解為若干電路環(huán)節(jié),或若干大塊;每大塊又由若干電路部件組成;每個電路部件又由若干微電子元器件組成……對初次接觸微型計算機的讀者,如果從一個實際微型計算機出發(fā)來講解其工作原理,則會事倍功半。因此,本書擬從微型計算機的最基本功能出發(fā)講解其電路工作原理,以在有限的學時內(nèi)給讀者一個較完整的概念,然后在以下各章中逐步完善實際微型計算機的全貌。微型計算機的基本功能可概括為“三能一快”:能運算(加、減、乘、除)、能判別(大于、小于、等于、真、假)及能決策(根據(jù)判別來決定下一步的工作)。但所有這些“能”的過程都必須建立在“快”的基礎上才能有實際意義。 微型計算機這種基本功能從電路原理來理解就是信息在各個部件間的流通問題。在第2章中已講到總線結構及信息流通的過程,在整個微型計算機中、信息量是很大的,部件數(shù)也是很多的,如何做到各個信息和部件之間能夠“循序漸進、各得其所、有條不紊、快而不亂”呢?這就是微型計算機基本工作原理所要解答的問題。本章將以一個簡化了的微型計算機作為分析對象,逐步講述一般計算機的各種基本功能,從而概括出微型計算機的基本工作原理。在分析過程中,陸續(xù)介紹各個基本電路和部件之間的信息流通過程,指令系統(tǒng)的意義,程序設計的步驟,控制部件的功能及其結構,還有控制矩陣產(chǎn)生控制字的過程等等,同時對例行程序作較詳細的闡述。這樣就可以對微型計算機的基本工作原理有一個比較完整的概念。 3.1 微型計算機結構的簡化形式 為了易于分析和理解,我們先來介紹一個簡化了的微型計算機。如圖3.1(a)所示,其硬件結構特點如下: (1) 功能簡單:只能做兩個數(shù)的加減法。 (2) 內(nèi)存量。褐挥幸粋16×8PROM(可編程序只讀存儲器)。 (3) 字長8位:二進制8位顯示。 (4) 手動輸入:用撥動開關輸入程序和數(shù)據(jù)。 雖然如此簡單,但已具備了一個可編程序計算機的雛型,麻雀雖小,五臟俱全。尤其是有關控制矩陣和控制部件的控制過程和電路原理的分析,更有助于初學者領會計算機的原理。本節(jié)先對各個部件略作解釋,以后各節(jié)再逐步深入分析其工作過程。 1. 程序計數(shù)器PC 計數(shù)范圍由0000~1111(用十六進制可記作由0~F)。每次運行之前,先復位至0000。當取出一條指令后,PC應加1。 2. 存儲地址寄存器MAR 接收來自PC的二進制程序號,作為地址碼送至PROM去。 3. 可編程序只讀存儲器PROM 其原理如圖3.2所示。這是一個4×4PROM,它和圖2.30的ROM之不同點是:每條橫線與豎線都有一條由開關和二極管串聯(lián)的電路將它們連接起來。因此,只要撥動開關,即可使該數(shù)據(jù)位置1或置0,從而達到使每個存儲單元“寫入”數(shù)據(jù)的目的。因而稱這種ROM為可編程序ROM。PROM實際上同時具有RAM和ROM的功能。這里為了簡化作圖而只用4×4PROM的圖,如是16×8PROM,則其橫線應為16條(R0~R15),豎線為8條(D7D6…D0),地址碼線則相應地應為4條(A3A2A1A0)。 4. 指令寄存器IR IR從PROM接收到指令字(當LI=1,ER=1),同時將指令字分送到控制部件CON和W總線上去。指令字是8位的: ×××× ×××× MSB LSB 最高有效位最低有效位左4位為最高有效位(高4位),稱為指令字段;右4位為最低有效位(低4位),稱為地址字段。 5. 控制部件CON 其功能如下: (1) 每次運行之前,CON先發(fā)出CLR=1,使有關的部件清0。此時: PC=0000 IR=0000 0000 (2) CON有一個同步時鐘,能發(fā)出脈沖CLK到各個部件去,使它們同步運行。 (3) 在CON中有一個控制矩陣CM,能根據(jù)IR送來的指令發(fā)出12位的控制字: CON=CPEPLMERLIEILAEASUEULBLO 根據(jù)控制字中各位的置1或置0情況,計算機就能自動地按指令程序而有秩序地運行。 6. 累加器A 用以儲存計算機運行期間的中間結果。它能接收W總線送來的數(shù)據(jù)(LA=1),也能將數(shù)據(jù)送到W總線上去(EA=1)。它還有一個數(shù)據(jù)輸出端,將數(shù)據(jù)送至ALU去進行算術運算。這個輸出是雙態(tài)的,即是立即地送去,而不受E門的控制。 7. 算術邏輯部件ALU 它只是一個二進制補碼加法器/減法器(參見圖1.9)。當SU=0,ALU,進行加法A+B;當SU=1,ALU,進行減法A-B,即(A+B′)。 8. 寄存器B 將要與A相加減的數(shù)據(jù)暫存于此寄存器。它到ALU的輸出也是雙態(tài)的,即無E門控制。 9. 輸出寄存器O 計算機運行結束時,累加器A中存有答案。如要輸出此答案,就得送入O。此時EA=1,LO=1,則O=A。典型的計算機具有若干個輸出寄存器,稱為輸出接口電路。這樣就可以驅(qū)動不同的外圍設備,如打印機、顯示器等。 10. 二進制顯示器D 這是用發(fā)光二極管(LED)組成的顯示器。每一個LED接到寄存器O的一位上去。當某位為高電位時,則該LED發(fā)光。因為寄存器O是8位的,所以這里也由8個LED組成顯示器。 這種結構,一般可分成3大部分,如圖3.1(b)的功能分解圖所示: (1) 中央處理器CPU(包括PC,IR,CON,ALU,A及B); (2) 記憶裝置M(MAR及PROM); (3) 輸入/輸出I/O(包括O及D,D也可稱為其外圍設備)。中央處理器(central processing unit,縮寫為CPU)是將程序計數(shù)功能(PC)、指令寄存功能(IR)、控制功能(CON)、算術邏輯功能(ALU)以及暫存中間數(shù)據(jù)功能(A及B)集成在一塊電路器件上的集成電路(IC)。實用上的CPU要比這里的圖例更為復雜些,但其主要功能是基本一樣的。 存儲器M(memory)在此圖例中只包括存儲地址寄存器(MAR)及可編程存儲器(實際還包括了地址譯碼功能),這就是微型計算機的“內(nèi)存”。實際的“內(nèi)存”要包括更多的內(nèi)容(如ROM,RAM及EPROM等)和更大的存儲容量。輸入及輸出接口(I/O)是計算機實行人機對話的重要部件。本簡例中的輸入將是人工設定PROM(見3.3節(jié)的闡述)而沒有輸入電路接口只有輸出有接口(O)。實際微型計算機的輸入設備多為鍵盤,輸出則為監(jiān)視器(即電視屏顯示器),因而必須有專用的輸出接口電路。 3.2 指令系統(tǒng) 指令系統(tǒng)就是用來編制計算程序的一個指令集合。在未編制出計算程序之前,計算機是一堆無價值的電路硬件。這臺微型機有5條指令,即其控制部件能完成一系列例行程序以執(zhí)行5種命令: LDA——將數(shù)據(jù)裝入累加器A; ADD——進行加法運算; SUB——進行減法運算; OUT——輸出結果; HLT——停機。這5條指令在一起就稱為這臺計算機的指令系統(tǒng)。 不同型號的微處理機的指令系統(tǒng)是不同的,指令的條數(shù)也不相同。例如,Z80型的指令系統(tǒng)可達158條,M6800型有72條,6502型則有56條指令,而Intel 80386則為152條。下面用一個計算程序的指令清單來解釋這幾條指令的用法,以便初學者更易于體會其意義。例如一個計算程序的格式如下:助記符 操作數(shù) 注釋 LDA R9 。弧“裄9中的數(shù)據(jù)存入A ADD RA ; 把RA中的數(shù)據(jù)與A的相加 ADD RB ; 把RB中的數(shù)據(jù)與A的相加 ADD RC ; 把RC中的數(shù)據(jù)與A的相加 SUB RD ; 把A中的數(shù)據(jù)與RD的相減 OUT 。弧 ≥敵鯝中的數(shù)據(jù),即結果 HLT ; 停機這樣的格式稱為用匯編語言寫的匯編語言程序。最左邊的符號稱為助記符,中間的符號R9,RA等稱為操作數(shù),在“;”之后的稱為注釋,每一行就是一條指令。執(zhí)行第1條指令的結果:(A)=(R9) 執(zhí)行第2條指令的結果:(A)=(R9)+(RA) 執(zhí)行第3條指令的結果:(A)=(R9)+(RA)+(RB) 執(zhí)行第4條指令的結果:(A)=(R9)+(RA)+(RB)+(RC) 執(zhí)行第5條指令的結果:(A)=(R9)+(RA)+(RB)+(RC)-(RD) 執(zhí)行第6條指令的結果:(D)=(A) 執(zhí)行第7條指令的結果:CLK停止發(fā)脈沖 上面加括號的意義是指被括上的寄存器或存儲單元的內(nèi)容。如(A)是指累加器A中的內(nèi)容,(D)是指顯示器顯示出的數(shù)據(jù),(R9)是存儲單元R9中的數(shù)據(jù),等等。最后一條指令,使時鐘脈沖停發(fā),則計算機停止運行,但電源未切斷,所以顯示器中仍繼續(xù)顯示計算的結果。 3.3 程序設計 上節(jié)所列的是求幾個數(shù)加減過程的指令清單。寫出這個清單,只能說明你已把要計算的題目的計算步驟列出來了。如果這臺計算機能“認識”你用匯編語言寫出來的匯編程序,就可以直接輸入上面這個指令清單,計算機內(nèi)部有編譯程序自動將這個清單上的每一條指令翻譯成機器碼而使計算機工作起來。但本章介紹的是最簡單的微型計算機,它不“認識”你所寫的匯編程序。因此寫完這個清單,不能說程序已設計完畢,這一節(jié)就是針對微型計算機介紹一個程序設計的步驟和內(nèi)容。無疑,指令清單也是程序設計的一部分,而且是首先要做的重要一步。上面講的指令清單可以說是將求4個數(shù)相加再減去一個數(shù)的公式而寫成的計算程序: D=(R9)+(RA)+(RB)+(RC)-(RD) 這幾個參與運算的數(shù)當然可以是任意的,所以公式是用代數(shù)符號寫的。這里所用的代數(shù)符號,故意與存儲單元的序列相一致。事實也是如此,因為要參與運算的數(shù)必須先輸入到存儲器中去。上面講的微型計算機并不認識助記符的意義,因此必須將指令清單中每一條指令都翻譯成二進制碼——機器碼。另外,存儲器中既要寫入計算程序,也要存放參與運算的數(shù)據(jù),因此,還得決定存儲器中的存儲單元應如何分配,這稱為存儲空間分配?傊,程序設計中要包括:(1) 編制匯編語言寫的程序;(2) 助記符的翻譯;(3) 存儲器的分配等幾部分。下面就來介紹一下程序設計的步驟。 3.3.1 先要有一個操作碼表 這是由計算機制造廠提供的翻譯表,它是每個助記符與二進制碼的相應對照表。由于我們的計算機很簡單,只有5個助記符,列成對照表,比較簡單易記。但如果指令系統(tǒng)很龐大的話,此表也就很大而不易記憶,因而就必須有特殊的方法才能迅速可靠地使用它。 3.3.2 存儲器分配 在本微型機中就是要把PROM中的16個存儲單元分配成兩個區(qū):程序存放區(qū)(指令區(qū))和數(shù)據(jù)存放區(qū)(數(shù)據(jù)區(qū))。 3.3.3 將源程序翻譯成目的程序 方法是:根據(jù)助記符與二進制的對照表(操作碼表)將上節(jié)例題中的每條指令的助記符譯成二進制碼,并將存儲單元符號寫成地址碼(即R0→0000,R1→0001,…,R9→1001),就成為下面的樣子! ≡闯绦颉 ∧康某绦颉 〈鎯卧浮DA R9 → 0 0 0 0 1 0 0 1 0 0 0 0 (R0) ADD RA →0 0 0 1 1 0 1 0 0 0 0 1 (R1) 令 ADD RB →0 0 0 1 1 0 1 1 0 0 1 0 (R2) ADD RC →0 0 0 1 1 1 0 0 0 0 1 1 (R3) 區(qū) SUB RD →0 0 1 0 1 1 0 1 0 1 0 0 (R4) OUT →1 1 1 0 × × × × 0 1 0 1 (R5) HLT →1 1 1 1 × × × × 0 1 1 0 (R6) 源程序 目的程序 存儲單元數(shù) 1610→0 0 0 1 0 0 0 0 1 0 0 1 (R9) 2010→0 0 0 1 0 1 0 0 1 0 1 0 (RA) 據(jù) 2410→0 0 0 1 1 0 0 0 1 0 1 1 (RB) 2810→0 0 0 1 1 1 0 0 1 1 0 0 (RC) 區(qū) 3210→0 0 1 0 0 0 0 0 1 1 0 1 (RD) 程序設計到這一步就可以算完成了,下一步就可以將此程序按存儲單元的地址順序存入計算機中去。下面就以此為例介紹輸入的方法。 3.3.4 程序及數(shù)據(jù)的輸入方法 我們的PROM既有ROM的特點(即可以存入但以后不許再改寫而只許讀出)也有RAM的特點(即可隨時寫入數(shù)據(jù),也可讀出數(shù)據(jù))。PROM分成兩區(qū),指令區(qū)一旦存入指令,就不許再改(除非要計算的公式改變了)。數(shù)據(jù)區(qū)是可以隨時存入要參與運算的數(shù)據(jù),并在計算過程中可以取出來。但無論如何,在第一次安排程序時,都得把程序和數(shù)據(jù)存入。其方法就是將PROM的每個數(shù)據(jù)位的開關撥向置0或置1的位置即可。圖3.3就是這樣一個PROM的輸入裝置,其左邊是控制板上安裝的開關,每個存儲單元有8個開關。16個存儲單元(R0~RF),就共有8×16=128個開關。右邊是根據(jù)例題而撥動的開關狀態(tài): 置0→開關撥向斷開的方向置1→開關撥向接通的方向其旁邊的括弧內(nèi)語句代表每一條指令,而數(shù)字是參與運算的十進制數(shù)據(jù)。將目的碼輸入到PROM中去,即撥動控制板上的開關,使其成圖3.3右邊的狀態(tài)。其中打×的開關是隨意狀態(tài),因為用不著,例如在 OUT→1110 ×××× HLT→1111 ×××× 中,就是因為這兩條指令并不訪問任何存儲單元,所以R5及R6的高4位(將要送至控制部件的)有二進制碼指令,而低4位(代表數(shù)據(jù)存放的存儲地址)可以隨意。 這個例題在輸入這些數(shù)據(jù)之后就是要求演算這樣一個具體算術題: D=16+20+24+28-32=? 在前面例題的計算程序設計好,并輸入至PROM之后,就可以開始執(zhí)行程序了。程序執(zhí)行的第一步必須先使計算機復位,此時控制器先發(fā)出一個CLR為高電位的脈沖,同時時鐘脈沖開始工作,即發(fā)出脈沖電壓系列到各個部件去。每一個CLK脈沖都起到指揮各部件的同步運行的作用。但究竟每個脈沖發(fā)出后,哪些部件應起響應作用,這就得由控制部件的控制字來決定了。關于控制字的產(chǎn)生和每一指令的執(zhí)行過程,將在下兩節(jié)詳加介紹。這里只是將上例執(zhí)行過程中間結果表列出來。這樣可以看到每執(zhí)行一條指令后,累加器A中存放的數(shù)據(jù): 執(zhí)行 LDA 9H 后 A=0001 0000[16(10)]執(zhí)行 ADD AH 后 A=0010 0100[36(10)]執(zhí)行 ADD BH 后 A=0011 1100[60(10)]執(zhí)行 ADD CH 后 A=0101 1000[88(10)]執(zhí)行 SUB DH 后 A=0011 1000[56(10)]執(zhí)行 OUT 后 D=0011 1000[56(10)]執(zhí)行 HLT 后 D=0011 1000(不變) 執(zhí)行HLT(停機)指令后,電源并不切斷,只是CLK停發(fā)脈沖,所以顯示器D上仍舊顯示出計算結果。 3.4 執(zhí)行指令的例行程序 在程序和數(shù)據(jù)裝入之后,啟動按鈕將啟動信號傳給控制部件CON,然后控制部件產(chǎn)生控制字,以便取出和執(zhí)行每條指令。執(zhí)行一條指令的時間為一個機器周期。機器周期又可分為取指周期和執(zhí)行周期。取指過程和執(zhí)行過程機器都得通過不同的機器節(jié)拍。在這些節(jié)拍內(nèi),每個寄存器(PC,MAR,IR,A,B,O等)的內(nèi)容可能發(fā)生變化。 3.4.1 環(huán)形計數(shù)器及機器節(jié)拍 在第2章中已介紹了環(huán)形計數(shù)器的電路原理(圖2.21),這里再來看看其各位的狀態(tài)如圖3.4所示。 從圖3.4的波形來看,環(huán)形計數(shù)器的各位輸出端Q0~Q5的電位就是機器節(jié)拍T0~T5的電位,由于時鐘脈沖是經(jīng)過反相器再接到環(huán)形計數(shù)器(圖中的“汽泡”表示非門)的CLK端的,所以各節(jié)拍之間的轉(zhuǎn)換是在時鐘脈沖的負邊緣開始的。由圖可見,如將環(huán)形計數(shù)器的輸出看做是一個字T,則: T=T5T4T3T2T1T0 這就是一個6位的環(huán)形字。它用以控制6條電路,使它們依次輪流為高電位,T0,T1,T2,T3,T4和T5稱為機器的節(jié)拍。 3.4.2 取指周期及執(zhí)行周期 取出指令的過程需要3個機器節(jié)拍,在清零和啟動之后第1個節(jié)拍為T0。下面將以上節(jié)的例題為例來仔細考查一下在每個節(jié)拍內(nèi)各個寄存器的內(nèi)容應如何變化,因而控制器應發(fā)出什么樣的控制字。 (1) 地址節(jié)拍(T0=1)在T0=1時,應將PC的內(nèi)容(即第1個地址碼)送入MAR(并通過MAR而達到PROM),所以,此時應有: EP=1,即PC準備放出數(shù)據(jù) LM=1,即MAR準備接收數(shù)據(jù)因此,控制部件應發(fā)出的控制字為: CON=CPEPLMER LIEILAEA SUEULBLO =0 1 1 0 0 0 0 0 0 0 0 0 控制字的排列次序請參看圖3.1。 (2) 儲存節(jié)拍(T1=1)在T1=1時,應將PROM中由PC送來的地址碼所指定的存儲單元中的內(nèi)容送到IR,同時IR立即將其高4位送至控制部件。因此,在此節(jié)拍到來之前,即應準備好: ER=1 即 PROM 準備放出數(shù)據(jù) LI=1 即 IR 準備接收數(shù)據(jù)所以: CON=0001 1000 0000 (3) 增量節(jié)拍(T2=1)在T2=1時,應使PC加1,做好下一條指令的取指準備。因此,CP=1,即命令PC計數(shù)。所以,此時: CON=1000 0000 0000 這3節(jié)拍稱為取指周期。這樣3節(jié)拍的取指周期,對任何一條指令都是一樣的。因為任何一條指令都是沿著這個程式而將指令取出來,再將其高4位送入控制部件去進行分析,決定下面應如何執(zhí)行,所以下面的3節(jié)拍就稱為執(zhí)行周期。由控制部件分析的結果,對本微型機來說,共有5類執(zhí)行的程序: LDA——將數(shù)據(jù)裝入A; ADD——將數(shù)據(jù)與A相加; SUB——將數(shù)據(jù)與A相減; OUT——將數(shù)據(jù)從A輸出; HLT——停機,即停發(fā)CLK脈沖。 執(zhí)行這樣的每個程序也需要3拍(T3,T4,T5),這種程序是由廠家編好了的,所以稱為例行程序。我們以LDA例行程序為例,考查一下在此3節(jié)拍中,各個寄存器的內(nèi)容應有何變化。 (4) T3=1時,IR已將從PROM來的指令碼的高4位送至控制部件進行分析。此高4位是與LDA相應的二進制碼“0000”,控制部件經(jīng)過分析后就發(fā)出命令: EI=1,將IR的低4位送至W總線; LM=1,MAR接收此低4位數(shù)作為地址并立即送至PROM;所以CON=0010 0100 0000 在上例題中,送至PROM的地址就是R9的二進制碼地址(1001)。也就是說,第1次訪問PROM的是其指令區(qū),第2次訪問的是其數(shù)據(jù)區(qū)。 (5) T4=1應將PROM的數(shù)據(jù)區(qū)的存儲單元(如R9,即1001)的內(nèi)容送入累加器A,即: ER=1,PROM準備放出數(shù)據(jù); LA=1,A準備接收數(shù)據(jù);即CON=0001 0010 0000 (6) T5=1因為T4=1時,已將數(shù)據(jù)存放入A中,所以,LDA的例行程序就已完成,T5節(jié)拍就變成空拍,即有: CON=0000 0000 0000 為什么需要這個空拍呢?這是因為雖然LDA的例行程序用不著這個節(jié)拍,但別的例行程序(如ADD,SUB等)還是用得著的,為了使每條指令的機器周期都是一樣長,即6個節(jié)拍,所以在不需6個節(jié)拍的 指令語句中都給加一個空拍以補足之。這樣的機器稱為固定周期的計算機。 LDA 9H,這條指令執(zhí)行完成后,就接著執(zhí)行ADDAH的指令。前面指出過,其取指周期仍和LDA9H是一樣的,只不過現(xiàn)在存于PC中的內(nèi)容已不是0000而是PC+1,即0001了。執(zhí)行周期則和上條指令的執(zhí)行周期略有不同。在執(zhí)行周期的各列中T3節(jié)拍,第2條指令(ADD AH)和第1條指令(LDA 9H)是一樣的,都是要求從IR將低4位的數(shù)據(jù)作為地址碼送到MAR去。所以其控制字中也是LM=1和EI=1。但在T4節(jié)拍就略有不同了。從PROM中來的數(shù)據(jù)不再送入累加器A,而是送入寄存器B,這樣A和B的數(shù)據(jù)就能直接被送入ALU 去相加。在T5節(jié)拍,第1條指令是空拍,第2條指令就不是了,因為將A和B的內(nèi)容相加的結果還要送回到A去。所以要求LA=1,EU=1。由于ALU在實行相加時,要求SU=0,所以這里沒出現(xiàn)SU。第3、第4條和第1條指令完全一樣,也是執(zhí)行周期為3節(jié)拍,控制字也完全一樣。因為它們同樣是要求進行加法運算。第5條是要求減法運算所以最后一個節(jié)拍中出現(xiàn)SU=1,因而控制字變成: CON=0000 0010 1100 第6條指令要求將累加器的內(nèi)容送入輸出寄存器,而與存儲器PROM無關,所以只在T3節(jié)拍要求LO=1,EA=1,而T4及T5節(jié)拍為空拍。 第7條指令只要求不再運行下去,即要求CLK時鐘停發(fā)脈沖。這便是由控制器直接發(fā)出停止信號。所以在T3節(jié)拍發(fā)出HLT(停機信號)后T4及T5節(jié)拍也是空拍。 3.5 控制部件 控制部件是使計算機能夠成為自動機的關鍵部件。它包括下列主要部件: (1) 環(huán)形計數(shù)器(RC); (2) 指令譯碼器(ID); (3) 控制矩陣(CM); (4) 其他控制電路。其中,環(huán)形計數(shù)器、指令譯碼器、控制矩陣稱為控制器。環(huán)形計數(shù)器用以發(fā)出環(huán)形字,從而產(chǎn)生機器節(jié)拍,其原理已在上一節(jié)中講過了。下面分別介紹其他環(huán)節(jié)。 3.5.1 指令譯碼器 上面在介紹指令寄存器IR時,曾指出進入IR的數(shù)據(jù)的高4位立即被送入控制部件。這高4位就是各種控制動作的代碼,比如:0000代表LDA的控制動作;0001代表ADD的控制動作;0010代表SUB的控制動作;1110代表OUT的控制動作;1111代表HLT的控制動作。 一個動作相當于一條控制線,要該動作實現(xiàn),就必須使該控制線為高電位。因此,這個由4個位組成的編碼,必須被譯成一個信號,即譯為某一控制線為高電位,這就是譯碼器的任務。譯碼器可以由與門和非門組成,圖3.5就是一個4位譯碼器。4位應該可以有16種編碼的可能,由于我們的模擬機功能簡單,只有5條指令,所以只要5個與門就夠了。 由PROM進入到指令寄存器的數(shù)據(jù)是8位的,設為I7I6I5I4I3I2I1I0,則其高4位為: I7I6I5I4 在指令為LDA時, I7I6I5I4=0000 此時,加至指令譯碼器的輸入端的全是低電位,而各個非門的輸出則全為高電位,所以與門1的四個輸入端也全是高電位,故其輸出,即控制線LDA為高電位。在指令為ADD時, I7I6I5I4=0001 此時,加于指令譯碼器的輸入端的左三個(I7I6I5)為低電位,而右一個(I4)為高電位。而與門2的上邊一條輸入線不接至非門而直接與I4相接,所以是高電位。與門2的其他3條輸入線都接至非門,所以也是高電位。因此,與門2的4個輸入端全為高電位,故其輸出,即控制線ADD為高電位。其他各與門的接法,也是循此規(guī)律。如在指令SUB時,I7I6I5I4=0010,則與門3應有一個輸入線直接接至I5,其他各線則接至非門。也就是說,哪一位為0(低電位),則與門與該位相連的輸入線應接至其非門;否則,直接接至該位。輸出為OUT和HLT的控制線與門輸入線的接法,就是按這個規(guī)律接的,讀者可以自己檢驗一下。 3.5.2 控制矩陣譯碼器能將編碼信息譯成某一控制線為高電位,試看一下上面的控制字。每一節(jié)拍大都要求兩個控制字位為高電位,雖然也有一位為高電位的(如CP=1),但只要不是一位的就要求2位或3位為高電位。而控制字有12位,每一指令要執(zhí)行6拍,每拍均有不同的位為高電位,這又如何實現(xiàn)呢? 控制矩陣就是為了解決這個問題的,所以控制矩陣是控制部件的核心。圖3.6就是這樣一個控制矩陣(CM)。 最上面部分是一個環(huán)形計數(shù)器,它使T0至T5的6根橫線輪流為高電位;中間4根橫線為指令控制信號線。它們的電位高低是由上面的譯碼器決定的;最下面部分是由19個與門和6個或門組成一個邏輯電路。這個電路共有12個輸出端,就是控制字CON: CON=CPEPIMERLIEILAEASUEULBLO 這個電路的設計過程當然是相當復雜的。不過我們不打算去涉及這個問題,我們只要知道其工作原理就可以了。開機前總是先使CLR為高電位,則此時環(huán)形計數(shù)器復位至T0=1,其他各位為0。這就是說,每一節(jié)拍都是從T0開始的。 如果從譯碼器來的譯碼結果是使LDA=1,那么,試看一下這條指令的6個節(jié)拍中6個控制字是怎樣實現(xiàn)的。 T0=1時,EP=1; LM=1。(因為T0直接接至EP并通過或門I接至LM) T1=1時,LI=1(因為LI端與T1直接相連); ER=1(因為T1通過或門Ⅱ至ER端)。 T2=1時,CP=1(因為T2直接通至CP端)。 T3=1時,LM=1(因為與門1的兩個輸入都是高電位,使或門Ⅰ導通)。 EI=1(因為與門7的兩個輸入都是高電位,使或門Ⅲ導通)。 T4=1時,ER=1(因為與門4的兩個輸入都是高電位,使或門Ⅱ?qū)?; LA=1(因為與門10的兩個輸入都是高電位,使或門Ⅳ導通)。 T5=1時,沒有任何位為高電位(空拍)。這一指令語句的6個節(jié)拍的相應控制字已在上節(jié)討論過,并在表3?3中可以看到各節(jié)拍相應為高位的各位。其他的幾條指令語句的各個節(jié)拍的各位的電位高低讀者可以自行檢驗一下。 5條指令的控制器就已經(jīng)這么復雜,由此可知要擴大指令系統(tǒng),其控制矩陣的結構以及設計上的問題是相當復雜的。這樣從結構上用邏輯電路的方法來實現(xiàn)控制字的方法稱為硬件方法。也有用軟件來實 現(xiàn)這個目標的,尤其在指令系統(tǒng)較大,控制字較長(即位數(shù)很多)的情況下,常用軟件方法來實現(xiàn)——這就是所謂微程序法。這里不可能介紹這種方法,因為這已經(jīng)超出本書的范圍了。 3.5.3 其他控制電路 上面由環(huán)形計數(shù)器、控制矩陣及指令譯碼器組成的部分稱為控制器。為了實現(xiàn)控制動作,還需要下述幾個電路(見圖3.7)。 時鐘脈沖發(fā)生器——這一般可分成兩部分,即時鐘振蕩器及射極跟隨器。前者一般都是石英晶體振蕩器,后者則用以降低輸出電阻,以便有更大的電流輸出,因為時鐘脈沖發(fā)生器同時要推動很多的電路。運行/停車觸發(fā)器——這個電路既接收來自按鈕的“運行”脈沖信號,也接收來自指令譯碼器的“HLT”停車信號,而其輸出就去啟動時鐘振蕩器。 “啟動”和“清除”按鈕——這是由人直接操作的主令電器,命令都是由此開始的。圖3.7只用方塊圖展示控制部件各個電路間的關系。每一個方塊圖較詳細的電路在微電子學及晶體管電路的書都可見到,這里就不細加介紹了。 3.6 微型計算機功能的擴展 上面介紹的微型計算機的功能顯然是太少了,以致實際上沒有什么用處,它只能用來作為教學模型,引導入門。功能不足的原因有二,首先是硬件過于簡單,尤其是控制部件只能接受5條指令而產(chǎn)生相應的例行程序。為了擴大計算機的功能,就應該擴大其指令系統(tǒng)。其次是軟件開發(fā)問題,即如何利用現(xiàn)有的指令系統(tǒng),經(jīng)過靈活的編程以解決更多更復雜的問題。歸根到底,計算機的功能在很大程度上取決于其中央處理器部分,而后者的功能又取決于其控制器的功能。此外,其他基本組成電路,如算術邏輯部件(ALU)、寄存器的個數(shù)等等,都必須作相應的改進,才能擴展計算機的功能。下面幾節(jié)就是為了進一步接近現(xiàn)代微型計算機而設計的過渡章節(jié)。 這個功能更大的微型計算機,在硬件上增加不多,而是算術邏輯部件及控制器的功能有相當?shù)臄U展。這樣,就既可能進行邏輯運算,也有跳轉(zhuǎn)和循環(huán)運算的功能。當然,由于控制器的增強,指令系統(tǒng)已擴大到28條指令,這樣的計算機就更接近于現(xiàn)代型的微型計算機了。圖3.8就是功能擴充了的微型計算機的結構圖,其基本結構和圖3.1的簡易微型計算機是相似的,F(xiàn)在只將其中與其有區(qū)別的組件逐個加以介紹。 1. 子程序計數(shù)器SC 這是第2章的微型計算機所沒有的。它本身也相當于一個程序計數(shù)器,不過它不由CLR來清零,而可由LS門來置數(shù)。一旦置數(shù),即為其子程序的開始地址。 SC的位數(shù)為8位。 LS——“裝入”的可控門; ES——“輸出”的可控門,即3態(tài)門; CS——“計數(shù)”的控制端。 2. 程序計數(shù)器PC PC增加了一個LP門,這就使得PC可以接收跳轉(zhuǎn)地址。這樣擴大了計算機的功能,換句話說,PC可以不從00H開始。 3. 隨機存取存儲器RAM 這里不用PROM而用RAM作為主存儲器。RAM的存儲單元為256個,字長為12位。因為可以隨機存取,故除MAR(存儲地址寄存器)外,還得有一個MDR(存儲數(shù)據(jù)寄存器)。 4. 控制部件CON 此CON將要產(chǎn)生一個28位的控制字: LSCSESLP CPEPLMWE MELDEDLI EILNENLA EAS3S2S1 S0EULBLX INXDEXEXLO 5. 算術邏輯部件ALU 上面的簡化型計算機的ALU是一個二進制補碼加法器/減法器。只有算術加法及減法兩種運算。其控制端為Su,即只有一位。這里的控制端改為S=S3S2S1S0,即有4位。4位則有16種可能的組合,本機只用其中的10種,以得到3種算術運算和7種邏輯運算。 6. 變址寄存器X 這是新增加的一種寄存器,它可以用指令使其加1或減1: INX——加1指令助記符,其控制端符號為INX; DEX——減1指令助記符,其控制端符號為DEX。 7. 指令寄存器IR 這是一個12位的寄存器,其指令字段和地址字段的位數(shù)不是固定不變的。在訪問存儲器指令(MRI)和轉(zhuǎn)移指令的執(zhí)行期間,高4位代表指令字段,低8位代表地址字段。所以高4位要被送到CON去分析,而低8位被送到W總線上去: ×××× ×××× ×××× (MSB4位) (LSB8位) ↓ ↓ CON W總線在運算指令執(zhí)行期間,高8位代表指令字段,而低4位可為任意數(shù),因為它不代表任何意義: ×××× ×××× ×××× (MSB8位) (LSB4位) ↓ ↓ CON 不用關于訪問存儲器的指令、轉(zhuǎn)移指令和運算指令的定義,下面會討論到。 本機共有28條指令,可分為3類: 1. 訪問存儲器指令(memory reference instruction,縮寫為MRI) 這些指令都與存儲器的讀/寫有關,所以其地址字段必須為8位(256個地址)。訪問存儲器指令的特點是:由指令寄存器分出來的地址字段(8位的地址字段)必定進入MAR(存儲器地址寄存器),這就能夠識別出MRI這類指令。 2. 轉(zhuǎn)移指令可用以改變程序的順序。有了這類指令,就可以在規(guī)定的某種條件下將程序進程向前轉(zhuǎn)移或向后轉(zhuǎn)移,也可跳過若干條指令語句或去執(zhí)行某個子程序之后再回至下一條指令語句。轉(zhuǎn)移指令也有六條,其特 點是由指令寄存器IR分出來的地址段(8位)將進入程序計數(shù)器PC(即LP=1),或子程序計數(shù)器(LS=1)。 3. 邏輯運算指令這類指令的特點是與存儲器及程序計數(shù)器都無關,而是與ALU、A及B寄存器有關?刂破髦灰拥1111的高4位,即知為運算指令,然后控制器再辨認選擇碼以確定進行什么樣的運算。由于這些運算都是在ALU和A,B之間進行的,所以不需地址碼。低4位可以不置數(shù),由其隨機存在,并不產(chǎn)生任何影響。 3.7 初級程序設計舉例 有了3.6節(jié)提供的指令系統(tǒng),就可以據(jù)此進行程序設計。這里只介紹幾個初級程序的程序清單,并作相應的解釋。所謂初級程序是包括下列的程序模式: (1) 簡單程序——程序一統(tǒng)到底,中間沒有任何分支和跳轉(zhuǎn)。 (2) 分支程序——程序進行中,根據(jù)判斷程序執(zhí)行的不同結果而分別跳轉(zhuǎn)至其他子程序去。 (3) 循環(huán)程序——程序進行過程中,在某一循環(huán)體進行若干次循環(huán)運行,然后再繼續(xù)前進。 (4) 調(diào)用子程序——程序進行至某一階段,調(diào)用存儲于某存儲區(qū)中的某個子程序,然后返回至主程序繼續(xù)運行下去。簡單程序在3.4節(jié)簡化型式計算機中已講過了,下面看跳轉(zhuǎn)指令及其如何形成循環(huán)程序的簡例!纠3.1】程序清單指 R0 LDA 6H 把(R6)裝入A去令 R1 SUB 7H 從(A)減去(R7) 區(qū) R2 JAM 5H (A)=負,則轉(zhuǎn)移至R5 R3 JAZ 5H (A)=0,則轉(zhuǎn)移至R5 R4 JMP 1H 無條件轉(zhuǎn)移至R1 R5 HLT 數(shù) R6 25(10) 據(jù) 區(qū) R7 9(10) 此程序清單包括指令區(qū)和數(shù)據(jù)區(qū)。數(shù)據(jù)區(qū)只存入兩個數(shù)據(jù):25(10)和9(10),它們分別存于存儲單元R6和R7中。指令區(qū)是要求將R6中的內(nèi)容減去R7中的內(nèi)容,當其差≤0時,即停止運算,否則繼續(xù)作多次的減法運算。執(zhí)行結果:我們按上面程序清單的次序,看每條指令執(zhí)行的結果應是什么。 指令 執(zhí)行結果 R0 LDA 6H A中的內(nèi)容=25(10) R1 SUB 7H A中的內(nèi)容=25-9=16(10) R2 JAM 5H 因為(A)≠負,所以不轉(zhuǎn)移 R3 JAZ 5H 因為(A)≠0,所以不轉(zhuǎn)移 R4 JMP 1H 無條件轉(zhuǎn)移至R1 從R1起再執(zhí)行第2次: R1 SUB 7H A中的內(nèi)容=16-9=7(10) R2 JAM 5H 因為(A)≠負,所以不轉(zhuǎn)移 R3 JAZ 5H 因為(A)≠0,所以不轉(zhuǎn)移 R4 JMP 1H 無條件轉(zhuǎn)移至R1 從R1起再執(zhí)行第3次: R1 SUB 7H A中的內(nèi)容=7-9=-2(10) R2 JAM 5H 因為(A)=負,所以轉(zhuǎn)移至R5 R5 HLT 停機這個程序可以理解為求(R6)÷(R7)的除法運算。這里是25÷9,除的結果應得商為2,余數(shù)為7。程序循環(huán)運行的次數(shù)即為商,余數(shù)即為第2次執(zhí)行后A中的內(nèi)容。 【例3.2】循環(huán)程序利用變址寄存器可以設計一個循環(huán)程序: R0 LDX 5H 將(R5)裝入變址器X R1 DEX 命(X)減1 R2 JIZ 4H (X)=0,則轉(zhuǎn)移至R4 R3 JMP 1H 無條件轉(zhuǎn)移至R1s R4 HLT 停機 R5 3(10) (R5)=3(10)(數(shù)據(jù)) 第1次執(zhí)行結果: R0 LDX 5H (X)=(R5)=3(10) R1 DEX (X)=3-1=2(10) R2 JIZ 4H 因為(X)≠0,所以不轉(zhuǎn)至R4 R3 JMP 1H 無條件轉(zhuǎn)回R1 第2次執(zhí)行結果: R1 DEX (X)=2-1=1(10) R2 JIZ 4H 因為(X)≠0,所以不轉(zhuǎn)至R4 R3 JMP 1H 無條件轉(zhuǎn)回R1 第3次執(zhí)行結果: R1 DEX (X)=1-1=0 R2 JIZ 因為(X)=0,所以轉(zhuǎn)至R4 R4 HLT 停機由此例可見,DEX至JIZ這兩條指令之間要執(zhí)行由“LDX R5”中所規(guī)定的次數(shù)(R5的內(nèi)容就是次數(shù))。此例R5=3(10),所以執(zhí)行3次。如R5=10(10),則將進行10次,R5=100(10),則將進行100次。圖3.9循環(huán)程序這個循環(huán)程序可以圖3.9的流程圖來領會其執(zhí)行過程。如果在DEX和JIZ之間還有別的指令語句,則同樣也得執(zhí)行3次。在DEX和JIZ之間的內(nèi)容稱為循環(huán)體。 【例3.3】乘法計算的程序利用循環(huán)程序可作乘法計算,例如要求12(10)×8(10),就是要求將12(10)連加8次。這就可以利用循環(huán)程序,讓它進行8次循環(huán)。程序如下: R0 NOP R1 LDX AH R2 CLA R3 DEX R4 ADD 9H 7次返回 R5 JIZ 7H R6 JMP 3H R7 OUT 轉(zhuǎn)出循環(huán) R8 HLT R9 12(10) RA 8(10) 其中NOP為空操作指令,即不做什么動作。執(zhí)行LDX AH時,把(RA)=8(10)裝入變址器X。執(zhí)行CLA時,使累加器A清零。執(zhí)行DEX時,開始循環(huán),并在第1次通過時把(X)減1而成為(X)=7(10)。執(zhí)行ADD 9H時,把12(10)與累加器A的內(nèi)容相加。JIZ 7H的指令,在第1次循環(huán)時不起作用。執(zhí)行JMP 3H時,使程序回到DEX語句。因為存儲單元RA裝入的是8(10),即在變址寄存器中的整數(shù)是8(10),所以循環(huán)要執(zhí)行8次。而ADD 9H(R9中裝的是12(10))處于DEX和JIZ之間(ADD 9H就是循環(huán)體),所以也要執(zhí)行8次,即12(10)這個數(shù)要在ALU中與A的內(nèi)容連加8次后存在累加器A中。 當執(zhí)行8次循環(huán)之后,再執(zhí)行JIZ 7H時,程序就轉(zhuǎn)至OUT,于是答案96(10)就被存入輸出寄存器O中,然后執(zhí)行程序HLT——停機。程序至此執(zhí)行結束。此例中的變址寄存器X的內(nèi)容是由存儲單元RA裝入的。要知道RA的內(nèi)容是由輸入寄存器N由外部設備輸入的。其實可以直接由外部設備通過輸入寄存器N裝入累加器A再裝入變址寄存器,而不必經(jīng)過存儲器的單元RA。這只要將上例中的頭兩條指令改成下面的樣子即可: R0 INP ;將外部數(shù)據(jù)裝入A R1 XCH ;將(A)和(X)互換其他各條指令保持原樣不變,而刪去最后那一條指令[RA=8(10)]。由于在進入循環(huán)之前,有一條 CLA語句,可以將A清零,所以A和X交換之后,A中是什么內(nèi)容可以不去管了!纠3.4】邏輯運算的例子設計一個程序,用以測試某個來自接口電路的輸入數(shù)I0(12位),以確定該數(shù)是否為奇數(shù)。如I0為奇數(shù)(即最后一位為1),則顯示一個1111 1111 1111;如I0是偶數(shù)(最后一位為0),則顯示一個0000 0000 0000。程序清單如下: R0 INP 。粚0裝入累加器A R1 LDB 9H。粚(R9)裝入寄存器B R2 AND ;將(B)與(A)進行“與”運算 R3 JAZ 6H。(A)=0,則轉(zhuǎn)移至R6 R4 LDA AH ;將(RA)裝入累加器A R5 JMP 7H ;無條件轉(zhuǎn)至R7 R6 LDA BH。粚(RB)裝入累加器A R7 OUT ;輸出(A)至顯示器 R8 HLT ;停機 R9 0 0 0 0 0 0 0 0 0 0 0 1 (掩碼) RA 1 1 1 1 1 1 1 1 1 1 1 1 奇數(shù)標志 RB 0 0 0 0 0 0 0 0 0 0 0 0 偶數(shù)標志程序解釋:執(zhí)行INP時, A=I0=×××× ×××× ×××A0 最右邊一位A0可能是1或0。執(zhí)行LDB 9H時,將R9的內(nèi)容裝入寄存器B: B=(R9)=0000 0000 0001 這個字叫做掩碼或屏蔽字。這是因為在執(zhí)行“與”運算時,累加器中的數(shù)字A的高位(除A0位外的所有的位)將與“0”相“與”而均變成0,不論其原來是1或0。這就稱為屏蔽或掩蔽。執(zhí)行AND時,就是A和B的內(nèi)容各對應位相“與”,結果為: A=0000 0000 000A0 因此,在“與”運算之后:如A=0,即為A0=0; 如A≠0,即為A0=1。所以可得結論,若被測試的I0為奇數(shù),則此時A0≠0;若I0為偶數(shù),則A0=00。接下去,如A0=1,即執(zhí)行JAZ,結果因A≠0,不轉(zhuǎn)移至R6,而執(zhí)行其下一條語句:LDA AH,即將RA的內(nèi)容(1111 1111 1111)裝入累加器A。再執(zhí)行JMP 7H,即跳過下一條指令而至R7,即指令OUT,就將累加器的內(nèi)容顯示出來。如A0=0,則執(zhí)行JAZ指令時,因A=0,所以轉(zhuǎn)移至R6。R6的指令為LDA BH,即將RB的內(nèi)容裝到累加器A中去,于是: A=0000 0000 0000 接著執(zhí)行OUT語句,而把此內(nèi)容顯示出去。 邏輯運算,經(jīng)常用來測試數(shù)字的各種狀態(tài),如測試任一位的奇偶性等!纠3.5】子程序設計設計一個計算x2+y2+z2=?的計算程序。由于x2,y2和z2在形式上都是一樣的,是求一個數(shù)的平方值,這不但本題用得著,在做其他數(shù)學運算時也常用得著,因此可將x2做成一個子程序而存于存儲器中一個固定的區(qū)域中,用到時,即可將其調(diào)出使用。如將此子程序存于以RF2為起始地址(其地址為F2H,即1111 0010的存儲單元)的一個區(qū)域中,則可設計其程序如下: RF2 STA CAH ;將(A)暫存于RCA RF3 LDX CAH;將(RCA)裝入X RF4 CLA ;累加器A清零 循環(huán)程序 RF5 DEX ;(X)減1 循環(huán)體 RF6 ADD CAH ;將(RCA)與(A)相加 x個x相加的過程 RF7 JIZ F9H ;(X)=0,則轉(zhuǎn)移到RF9 RF8 JMP F5H。粺o條件轉(zhuǎn)移至RF5 RF9 BRB 。环祷刂鞒绦颉 C6 RC6 x RC7 y ;被運算的數(shù)據(jù) RC8 z RC9 RCA ;運算過程暫存地址有了此子程序就可以設計主程序的運算 x2+y2+z2=42+62+82=? 主程序有了子程序,每當求平方時,只要調(diào)用子程序即可,本例就是調(diào)用3次子程序。主程序只管把每次計算結果(存在RC9中)相加,因而主程序顯得短小清楚。下面解釋一下程序執(zhí)行過程。第1步,先將要運算的十進制數(shù)4,6和8存入到存儲單元RC6,RC7,RC8中去。第2步,就可開始執(zhí)行此程序了。其執(zhí)行過程如下: R00:將RC6的內(nèi)容(4(10))裝入累加器A。 R01:無條件跳至子程序開始地址F2H,并執(zhí)行子程序的各條指令。其過程如下: RF2:將A的內(nèi)容[4(10)]暫存入RCA中。 RF3:將RCA中的內(nèi)容[4(10)]裝入X中。 RF4:將A清除[即使(A)=0]。 RF5:使X的內(nèi)容減1,于是(X)=4-1=3(10)。 RF6:將RCA的內(nèi)容[4(10)]與A的內(nèi)容(0)相加,并存于A中,所以A=0+4=4(10)。 RF7:檢查(X)是否為0,因為(X)=3(10)≠0,所以不跳轉(zhuǎn)至RF3,而執(zhí)行下條指令。 RF8:無條件轉(zhuǎn)至RF5,進入第2循環(huán),X的內(nèi)容由3(10)減為2(10)。接著重復循環(huán)體RF6指令,再將RCA的內(nèi)容[4(10)]加到累加器A的內(nèi)容中去。這樣重復4次,A中所存的數(shù)即為4+4+4+4=16=42。重復4次后,再執(zhí)行至RF7時,檢查X的內(nèi)容,則(X)=0,所以跳出循環(huán)而進行RF9。 RF9:返回至主程序的R02。 R02:將累加器A的內(nèi)容[42=16(10)]暫存入RC9中。 R03:將RC7的內(nèi)容[6(10)]裝入A中。 R04:第2次跳轉(zhuǎn)至子程序的開始地址RF2。由于RC7的內(nèi)容為6(10),所以此循環(huán)將執(zhí)行6次,最后累加器中的內(nèi)容為62=36。然后跳回主程序的R05。 R05:將RC9的內(nèi)容[42=16(10)]與累加器A的內(nèi)容[62=36(10)]相加,并存于A中,所以(A)=42+62 R06:將A的內(nèi)容(42+62)暫存于RC9中。 R07:將RC8的內(nèi)容[8(10)]裝入A中。 R08:第3次跳轉(zhuǎn)至子程序開始地址RF2,并依次執(zhí)行 下去,至RF5又進入第3次以循環(huán)體為RF6 ADD,CAH的循環(huán)。此時由于裝的是RC8,其內(nèi)容為[8(10)],所以循環(huán)次數(shù)為8次。循環(huán)體中的RCA裝的也是RC8的內(nèi)容,所以也是8(10),所以8次循環(huán)后,存于A中的是82=64(10),然后跳回主程序的R09。 R09:將RC9的內(nèi)容(42+62)與累加器A中的內(nèi)容(82)相加,結果仍存入A中。所以A的內(nèi)容為(42+62+82)。 R0A:將A的內(nèi)容送入輸出寄存器O。此寄存器立即使顯示器出現(xiàn)計算結果。 R0B:停機。由上可見,只要將被運算的3個數(shù)x,y和z放入RC6,RC7和RC8就可以通過此程序計算任何3個數(shù)的平方和了。 3.8 控制部件的擴展 對于整個控制部件而言,也還是可以用圖3.7的方框圖來說明其中各環(huán)節(jié)的關系。不過,這個功能更大的模型式計算機的控制器就要復雜得多。其中,主要是控制矩陣,顯然變得更龐大而復雜,以致不可能在課本中將其邏輯電路畫出來。圖3.10就是控制器的結構圖。 圖中的Aminus,Azero,Xminus和Xzero來自累加器A和變址寄存器X。指令譯碼器接收來自指令寄存器IR的8位指令字段(高8位)而譯成28條指令線。其中HLT將直接被引到運行/停車觸發(fā)器(見圖3.7)。其他27條指令則被引至控制矩陣,以便產(chǎn)生28位的控制字。為了控制轉(zhuǎn)移,還應有轉(zhuǎn)移電路,它們的組成也是用門電路,初學者可暫不去追問這部分的電路結構,以免分散精力。下面只對控制矩陣作一簡要說明,不打算分析其電路結構。要知道28條指令在六拍周期內(nèi)產(chǎn)生6個控制字,每個控制又有28個位,此控制矩陣的繁雜程度是可想而知的。 和上述的微型計算機一樣,這也是一臺固定機器周期的計算機。一個機器周期也是包含6拍,前3拍為取指周期,后3拍為執(zhí)行周期。取指周期的3個時鐘節(jié)拍的動作可以由控制字中為高電位的位來表示: T0——Ep=1,LM=1(PC→MAR→RAM); T1——ME=1,LI=1(RAM→IR); T2——CP=1,(PC+1→PC)。這3個節(jié)拍和上述的微型計算機的一樣,請參考3.4。執(zhí)行周期的3個節(jié)拍,對于每條指令將有很大的不同,即其控制字中各位的置位情況各不相同。 助記符LDA。這是一條指令的操作碼(0000),如有一個操作數(shù)為nn(8位),則形成的指令為LDA nn。設此指令存于RAM的指令區(qū)的第一個存儲單元(其地址為0000 0000),nn是指參與運算的數(shù)據(jù)在RAM的數(shù)據(jù)區(qū)中所在的存儲單元的地址(n代表一個4位二進制數(shù)),如圖3.11所示。這條指令的執(zhí)行過程是: (1) 在T0拍時 則程序計數(shù)器PC將地址0000 0000送到MAR,同時也到RAM去。 (2) 在T1拍時 ME=1LI=1 則RAM中地址為0000 0000的存儲單元的內(nèi)容(0000nn)被讀出而送到控制器(0000部分)及指令寄存器IR(nn部分)中去。 (3) 在T2拍時 CP=1 則程序計數(shù)器加1。 (4) 在T3拍時 EI=1LM=1 則指令寄存器IR的內(nèi)容(nn)被送到MAR,同時也進入RAM去。因nn是在數(shù)據(jù)區(qū),所以其內(nèi)容(mmm)(m也是一個4位二進制數(shù))是一個要送入累加器A中去的數(shù)據(jù)。 (5) 在T4拍時 ME=1LA=1 則RAM中地址為nn的存儲單元的內(nèi)容(mmm)被送到累加器A中去。 (6) 在T5拍時:沒有任何操作,所以是空操作。這就是一條指令的執(zhí)行過程。對于其他的指令,如SUB,LDX等都可根據(jù)上例從表中知道各個組件的操作情況和信息流通的方向。 3.9 現(xiàn)代技術在微型計算機中的應用 科學技術的發(fā)展對微型計算機的要求是無止境的,一臺最完美的8位微處理器因受到它的字長(8位)、地址線的數(shù)量(16條)以及某些復雜指令不能一次完成,要編寫子程序來實現(xiàn)等局限性,不能滿足工業(yè)生產(chǎn)和科研工作中的復雜運算。新的16位和32位微處理機要比8位機強得多。 16/32位微型計算機與8位機相比,除明顯的處理字長不同外,還有下述優(yōu)點: (1) 更多的寄存器: 可以減少CPU對存儲器訪問的次數(shù),提高處理速度。 (2) 增加了存儲器尋址范圍: 16/32位地址字允許CPU直接對幾百萬個地址進行尋址。 (3) 更大的指令系統(tǒng): 包括16位乘法及除法指令,塊移動指令等,簡化了編程,從而加快了軟件的開發(fā)。 (4) 更高的速度: 采用了新型的半導體技術,時鐘頻率可以從過去8MHz提高到33MHz至1GHz,因此加快了微處理器的運算速度。 (5) 新的結構: 微型計算機的內(nèi)部組織管理采用微程序控制及流水線技術,加快了取指周期和訪問存儲器操作。在某些情況下運行的速度,達到數(shù)量級的增長。 (6) 存儲器管理的改進: 在硬件上增添高速緩沖存儲器,而在軟件上采用虛擬存儲技術,使微型計算機中執(zhí)行最慢的存儲器存取速度得到很大的提高;也使微型計算機的主存儲器在不擴大容量的情況下達到成倍的增加。 16/32位微處理器是采用超大規(guī)模集成電路(VLSI)技術,把更多、更復雜的電路都制作在一個芯片中,成為新一代產(chǎn)品。在這一節(jié)中,將要綜述一下這些技術的發(fā)展。 3.9.1 流水線技術 以往的計算機都采用馮·諾伊曼(Von·Neumann)結構,通常稱為存儲程序的運行方式,即程序的指令順序地儲存在存儲器中,這些指令被逐條取出并執(zhí)行。這種串行運行,重復取出和執(zhí)行順序指令是以往計算機的主要局限性。根本解決的方法是采用并行操作。 流水線技術是一種同時進行若干操作的并行處理方式。它把取操作和執(zhí)行操作重疊進行,在執(zhí)行一條指令的同時,又取另一條或若干條指令。程序中的指令仍是順序執(zhí)行,但可以預先取若干指令,并在當前指令尚未執(zhí)行完時,提前啟動另一些操作。我們用“取/執(zhí)行”工作中要完成的幾個操作為例。在這一個工作周期中要完成以下操作: (1) 取指令: CPU去主存儲器尋址,讀出指令字并送入指令寄存器。 (2) 指令譯碼: 翻譯過程可以用譯碼器或微程序控制單元來實現(xiàn)。 (3) 地址生成: 很多指令要訪問存儲器中的操作數(shù),操作數(shù)的地址也許在指令字中,或要經(jīng)過某些運算。 (4) 取操作數(shù): 當運算指令要求操作數(shù)時,就需再訪問存儲器,對操作數(shù)進行尋址并讀出。 (5) 執(zhí)行指令: 最后指令由ALU執(zhí)行。這種串行運行的順序如圖3.12(a)所示。而流水線操作就有可能使某些操作重疊。如在上一條指令在執(zhí)行時就順序從存儲器中取下一條指令,如圖3.12(b)所示。并行操作就可加快一段程序的運算過程。 流水線技術是要增加計算機的硬件,例如上述中,要采用預取指令操作就需要增加硬件來取指令,并把它存放到寄存器隊列中,使微處理器能同時進行取指令和執(zhí)行微指令重疊進行。因此,在16/32位微處理機中含有兩個運算/邏輯單元,一個主ALU僅用于取指令,另一個ALU專用于地址生成,這樣就可使地址計算與其他操作同時進行。雖然流水線技術已廣泛地應用于16/32位微處理機,但由于不同的指令運行時間不一樣長,流水線技術受到最長步驟所需時間的限制。 3.9.2 高速緩沖存儲器 在微型計算機中,雖然CPU的處理速度大大地提高,但主存儲器的存/取時間卻要比CPU慢一個數(shù)量級,這一現(xiàn)象嚴重地影響微型機的運算速度。在半導體RAM中,只有價格極為昂貴的雙極型RAM線路的讀寫時間可與CPU的處理速度處于同一個數(shù)量級。因此就產(chǎn)生一種分級處理的方法,在主存儲器和CPU之間加一個容量相對較小的高速緩沖存儲器(cache,簡稱高速緩存器),如圖3.13所示。有了高速緩存器以后,不論指令或數(shù)據(jù)要從主存儲器中存入或取出時,都先把它及后面連續(xù)的一組傳遞到高速緩存器中,CPU在取下一條指令或向操作數(shù)發(fā)出一個地址時,它首先看看所需的數(shù)據(jù)是否就在高速緩存器里,如果在高速緩存器內(nèi),就立即傳送給CPU;如果不在緩存器中,就要做一次常規(guī)的存儲器訪問。 由于程序中相關的數(shù)據(jù)塊一般都順序存放,并且大都存在相鄰的存儲單元內(nèi),因此CPU對存儲器的存取也大都是在相鄰的單元中進行。一般情況,CPU在高速緩存器中存取的命中率可以高達90%以上。高速緩存器及其控制線路均是由計算器的硬件實現(xiàn),因而用戶或程序員就無需訪問或控制操作高速緩存器,它就能大大提高CPU對存儲器的存取速度,而花費的代價是較低的。 3.9.3 虛擬存儲器 每一臺微型機都有一個確定數(shù)量的主存儲器,它大都是采用半導體RAM。而在大多數(shù)情況下,程序和數(shù)據(jù)最初都存放在某個大容量的軟磁盤和硬磁盤中,當需要時才把它們從磁盤傳送到RAM中去,然后執(zhí)行。有時,一個程序及數(shù)據(jù)要比主存儲器RAM的容量還大,這就無法運行。 為解決這類問題,我們采用硬件和軟件的綜合技術——虛擬存儲器,它允許建立一個存儲容量比實際物理上主存儲器的容量更大。存放在虛擬存儲器中的數(shù)據(jù)或程序只有其中一部分放在物理存儲器,若所執(zhí)行的指令地址不在這部分存儲器里時,管理計算機的軟件(計算機操作系統(tǒng))能察覺出來,知道要找的地址不在RAM中而在一個外部磁盤里。計算機管理軟件就會自動啟動磁盤,把包括所需地址的存儲區(qū)域調(diào)入物理存儲器,覆蓋原先存在的部分后繼續(xù)運行。虛擬存儲器像是一個很大的,并具有相連存儲單元的假想存儲器。在虛擬存儲計算機里,虛擬存儲器劃分成固定長度的相連區(qū)段,并有一個專門的邏輯地址寄存器來管理。大多數(shù)16/32位微處理器都沒有片內(nèi)虛擬存儲器,而是用輔助芯片來實現(xiàn)。 3.9.4 現(xiàn)代技術的應用 本節(jié)所介紹微處理器的幾種現(xiàn)代技術在各種不同的16/32位微處理器得到廣泛的應用。本書主要講述的16位微處理器都采用或部分采用了以上幾種現(xiàn)代技術,比8位微處理機向前發(fā)展了一步。這是當前科技人員所必須掌握的。 習題 3.1 寫出本章中簡化式計算機的指令系統(tǒng)的每條指令的匯編語言的助記符及其相應的機器碼。 3.2 程序計數(shù)器PC的內(nèi)容是什么意義? 3.3 指令寄存器IR從PROM接收到指令字(8位)后的運行過程如何,起什么作用? 3.4 試簡述程序設計的4個步驟。 3.5 環(huán)形計數(shù)器有何用處?什么叫環(huán)形字? 3.6 什么叫例行程序?什么叫機器、取指和執(zhí)行周期?本章簡化式計算機的機器周期包括幾個時鐘周期(機器節(jié)拍)?機器周期是否一定是固定不變的? 3.7 控制部件包括哪些主要環(huán)節(jié)?各有何用處? 3.8 子程序計數(shù)器有何用處? 3.9 本章第2個微型計算機的指令系統(tǒng)有多少條指令?它們可分成幾種類型?各個類型的特點是什么? 3.10 此微型機的控制字有幾位?各位的意義是什么? 3.11 變址寄存器X有何功能?在運算中能起什么作用? 3.12 指令寄存器IR是如何將其指令字段和地址字段分送出去的?這兩個字段的位數(shù)是否保持不變? 3.13 試寫出第2個微型計算機的各條指令的匯編語言的助記符及其相應的機器碼。
機械工程材料ppt作品:這是機械工程材料ppt作品,包括了緒論,工程材料的力學性能,金屬材料的基礎知識,金屬的塑性變形與再結晶,鋼的熱處理,金屬材料,非金屬材料,機械零件的失效與選材,新材料和新工藝等內(nèi)容,歡迎點擊下載。
機械工程測試技術ppt:這是機械工程測試技術ppt,包括了緒論,信息信號,測量誤差的分類,測試裝置的基本特性,常用傳感器與敏感元件,信號調(diào)理與記錄,振動的測試等內(nèi)容,歡迎點擊下載。
機械工程材料論文PPT課件:這是一個關于機械工程材料論文PPT課件,主要介紹了金屬材料的主要性能、金屬和合金的晶體結構與結晶、鐵碳合金、常用金屬材料、其他工程材料、機械零件選材的一般原則等內(nèi)容。第二章 機械工程材料基礎第一節(jié) 金屬材料的主要性能第二節(jié) 金屬和合金的晶體結構與結晶第三節(jié) 鐵碳合金第四節(jié) 常用金屬材料第五節(jié) 其他工程材料第六節(jié) 機械零件選材的一般原則 拉伸試驗 1. 屈服點——材料產(chǎn)生屈服點的最小應力。 表征金屬發(fā)生明顯塑性變形的抗力。2. 抗拉強度——材料在拉斷前所承受的最大應力。表示材料抵抗均勻塑性變形的最大能力。(三)硬度 ——指工程材料抵抗更硬的物體壓入其表面內(nèi)的能力,表示材料抵抗局部塑性變形或破壞的性能,是一個綜合反映材料彈性、塑性、強度和韌性的機械性能指標。70~85HRA 25~100HRB 20~70HRC 一、金屬的晶體結構(一)晶體 特點:1. 具有規(guī)則的外形;2. 具有固定的熔點;3. 具有各向異性。(二)晶格 ——描述原子在晶體中規(guī)則排列方式的空間幾何圖形,歡迎點擊下載機械工程材料論文PPT課件哦。