菜鳥學(xué)編程(C語(yǔ)言版).doc_第1頁(yè)
菜鳥學(xué)編程(C語(yǔ)言版).doc_第2頁(yè)
菜鳥學(xué)編程(C語(yǔ)言版).doc_第3頁(yè)
菜鳥學(xué)編程(C語(yǔ)言版).doc_第4頁(yè)
菜鳥學(xué)編程(C語(yǔ)言版).doc_第5頁(yè)
已閱讀5頁(yè),還剩87頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

菜鳥學(xué)編程 五袋老丐著 第一章 計(jì)算機(jī)的基本工作原理(初)一種有著神奇的“魔力”和“智能”的人造設(shè)備,正在迅速地、徹底地、默默無(wú)聞或者令人震驚地改變和豐富我們所生活的大千世界。這個(gè)看起來(lái)很不起眼的,在一些場(chǎng)合被稱為“電腦”的電器設(shè)備,是如何具有如此神奇的“魔力”和“智能”的?本章將帶你開始解開這個(gè)謎。11節(jié)介紹理想廚房系統(tǒng),1.2節(jié)通過(guò)一個(gè)炒菜實(shí)例講解理想廚房各部件是如何密切配合工作的。1.3是一張理想廚房系統(tǒng)與計(jì)算機(jī)系統(tǒng)的對(duì)照表1.4到1.8介紹了二進(jìn)制、計(jì)算機(jī)、機(jī)器指令和指令集、數(shù)和碼。1.09對(duì)計(jì)算機(jī)的重要特點(diǎn)進(jìn)行了概括性的總結(jié)、1.11是計(jì)算機(jī)與理想廚房的一些重要區(qū)別。其中1.2、1.3、1.4、1.9和1.11是本章重點(diǎn)。電子數(shù)字計(jì)算機(jī)從發(fā)明到現(xiàn)在,不過(guò)大約70年的時(shí)間。然而計(jì)算機(jī)的發(fā)明、改進(jìn)和普及,卻徹底地變革了人類社會(huì)。計(jì)算機(jī)本身也變得越來(lái)越復(fù)雜、快速、小巧、種類繁多。但大多數(shù)計(jì)算機(jī)都遵循馮.諾伊曼體系結(jié)構(gòu)。這為我們理解大多數(shù)計(jì)算機(jī)的基本工作原理提供了方便。本章是全書的重要基礎(chǔ)。通過(guò)本章,為你真正揭開計(jì)算機(jī)究竟如何工作的神秘面紗。(但是要直到12.4、12.5節(jié),才能徹底揭開計(jì)算機(jī)硬件如何在操作系統(tǒng)這個(gè)系統(tǒng)軟件的調(diào)度管理下,并行運(yùn)行多道程序的內(nèi)在奧秘。)糾正你對(duì)計(jì)算機(jī)可能存在的一些錯(cuò)誤認(rèn)識(shí)和看法。并且為第2、12、13章的學(xué)習(xí)打下牢固的知識(shí)基礎(chǔ)。本章不需要任何的預(yù)備知識(shí),只要你能把本章認(rèn)真仔細(xì)地學(xué)習(xí)兩遍,你就能夠真正懂得看似極為神秘莫測(cè)、奧妙無(wú)窮,到目前為止人類有史以來(lái)最偉大、最神奇而又最為復(fù)雜的發(fā)明計(jì)算機(jī)(又稱為“電腦”。這個(gè)偉大發(fā)明,匯集了幾代人中很多杰出人士的聰明才智和研究成果)是如何工作的基本原理。為達(dá)此目的,筆者付出了極大的努力,找到了一種比較好的比喻方法理想廚房系統(tǒng),由此開始我們的真正理解計(jì)算機(jī)工作原理的,激動(dòng)人心的探索旅程。1.1理想廚房系統(tǒng):理想廚房系統(tǒng),是一個(gè)通過(guò)順序執(zhí)行菜譜中的各個(gè)加工步驟,把原材料加工成菜肴的系統(tǒng)。它由硬件(理想廚房、自動(dòng)冰箱和三條傳送帶)和軟件(菜譜)組成。1) 硬件部分:理想廚房系統(tǒng),主要由以下三個(gè)硬件部件(即實(shí)物部件)構(gòu)成理想廚房、自動(dòng)冰箱和三條傳送帶。自動(dòng)冰箱:由非常多的大小一樣的格子組成,每個(gè)格子都有一個(gè)唯一的編號(hào),這個(gè)編號(hào)是從0開始逐1遞增的。自動(dòng)冰箱負(fù)責(zé)臨時(shí)保存菜譜、原材料和菜肴。是不是很奇怪?菜譜竟然要和原材料一道,統(tǒng)一存放在冰箱中!三條傳送帶:負(fù)責(zé)理想廚房與自動(dòng)冰箱之間的通信及物品(菜譜中的加工步驟、原料和菜肴)傳送。理想廚房:負(fù)責(zé)根據(jù)從菜譜中取到的加工步驟,進(jìn)行炒菜以及進(jìn)行相關(guān)的控制工作。2) 軟件部分:菜譜是理想廚房系統(tǒng)中一個(gè)無(wú)重量、無(wú)體積、不會(huì)損壞、可經(jīng)常更換的,但又極為重要的軟件部件(即信息流部件)。菜譜由一個(gè)一個(gè)的加工步驟順序組成。注意:術(shù)語(yǔ)“理想廚房系統(tǒng)”與“理想廚房”是有區(qū)別的,理想廚房只是理想廚房系統(tǒng)中的一個(gè)組成部分。理想廚房系統(tǒng)的構(gòu)成簡(jiǎn)圖如圖1.1所示:理想廚房 自動(dòng)冰箱 碟名 碟中物品 格子編號(hào) 格子(存放加工步驟或原料)R0R1 廚具R2 廚師PC 廚房管理員IR 材料傳送帶地址傳送帶控制傳送帶 01234567 圖1.1理想廚房系統(tǒng)的構(gòu)成簡(jiǎn)圖(但圖中沒(méi)有放入軟件)理想廚房中各種碟子的作用R0、R1、R2碟是一些通用臨時(shí)存放碟,用來(lái)臨時(shí)存放從冰箱中取來(lái)的原材料或經(jīng)過(guò)加工了的半成品或成品。PC碟:存放一個(gè)大于或等于0的整數(shù)值,這個(gè)值表示:下一個(gè)要執(zhí)行的加工步驟,位于自動(dòng)冰箱的哪一格中。IR碟:用來(lái)存放從冰箱中剛?cè)∵^(guò)來(lái)的一個(gè)(立刻要執(zhí)行的)加工步驟。 理想廚房執(zhí)行菜譜中的加工步驟,其流程完全是周期性的。 廚房管理員首先要根據(jù)PC碟中的值,通過(guò)三套傳送帶的協(xié)調(diào)工作,到自動(dòng)冰箱的指定格中去取菜譜中的一個(gè)加工步驟。取到理想廚房并把它放到IR碟中后,PC碟中的值將會(huì)加上1(這是為取下一個(gè)加工步驟做好準(zhǔn)備)。然后,廚房管理員閱讀并分析IR碟中剛?cè)〉降募庸げ襟E。根據(jù)此加工步驟的指示,去做以下七類工作中的一種: 1通過(guò)三套傳送帶,命令自動(dòng)冰箱把指定地址格子中的(炒菜加工步驟馬上要用到的)原材料(通過(guò)材料傳送帶)傳送到理想廚房中來(lái)即取物品;2命令廚師按照指令(即加工步驟)的要求,對(duì)原材料作一個(gè)基本加工操作(做“炒”,“蒸”,“煮”等基本操作步驟中的一個(gè)炒菜動(dòng)作)即加工原材料。 3通過(guò)向三套傳送帶向自動(dòng)冰箱發(fā)命令,把某個(gè)碟子中的成品(或半成品)送回到冰箱指定的格子中存放即存物品; 4在廚房的各個(gè)碟子或炊具之間傳送原料或半成品在廚房?jī)?nèi)部進(jìn)行物品傳送 ;5根據(jù)某個(gè)狀態(tài)碟中的具體條件(比如:加工步驟的預(yù)定時(shí)間到了、溫度夠了),不按正常順序取出并且執(zhí)行下一條指令,而是根據(jù)此指令中給出的(冰箱格子的相對(duì)或絕對(duì))地址,跳轉(zhuǎn)到那一格中去取下一條指令即進(jìn)行(有條件的)跳轉(zhuǎn)。6命令配菜員為某菜配原材料;即輸入(在本章不討論,見第12章)。7命令傳菜生端菜給顧客;即輸出(在本章不討論)。 一個(gè)加工步驟執(zhí)行完后,理想廚房立即自動(dòng)進(jìn)行下一個(gè)完全類似的、新的 取加工步驟執(zhí)行加工步驟的周期。 注意:為了解說(shuō)簡(jiǎn)潔起見,在以下敘述中,我們經(jīng)常把一個(gè)加工步驟稱為一條指令,因?yàn)橐粋€(gè)加工步驟就是一條指導(dǎo)理想廚房如何工作的命令。理想廚房一次只能執(zhí)行一條指令。一條指令的執(zhí)行周期,可分為取指子周期和執(zhí)行子周期這兩個(gè)階段。下面我們通過(guò)一個(gè)實(shí)例來(lái)講述理想廚房系統(tǒng)的工作機(jī)制。這是本章的一個(gè)重點(diǎn),因?yàn)橛?jì)算機(jī)的工作原理,與之極其相似。1.2理想廚房系統(tǒng)的一個(gè)炒菜實(shí)例(此節(jié)最好看光盤中的視頻)121現(xiàn)在,我們通過(guò)炒制一道香菇炒菜心的例子來(lái)說(shuō)明理想廚房系統(tǒng)的工作過(guò)程。 首先,把香菇放在冰箱地址為5的格子中,把菜心放在冰箱地址為6的格子中,冰箱地址為7號(hào)的格子,預(yù)留給炒好的菜使用。首先,把香菇放在冰箱地址為5的格子中,把菜心放在冰箱地址為6的格子中,冰箱地址為7號(hào)的格子,預(yù)留給炒好的菜使用。 菜譜的所有加工步驟(又稱為指令)從冰箱地址0號(hào)格開始依次按照順序存放,編寫香菇炒菜心的菜譜如下:地址0的格子中: 取地址5(中的物品)到R0碟;地址1的格子中: 取地址6(中的物品)到R1碟;地址2的格子中: 將R0碟和R1碟倒入炒鍋中炒好倒回R0碟;地址3的格子中: 送R0碟(中的物品)到地址7中; 可見,一共有4個(gè)加工步驟。開始時(shí)理想廚房系統(tǒng)狀態(tài)如下圖1.3(注意:冰箱格子以及理想廚房碟子中存放的物品都用了斜體字)理想廚房 自動(dòng)冰箱 碟名 碟中物品 地址 冰箱格子中物品R0R1 廚具R2 廚師PC 0 廚房管理員IR 材料傳送帶地址傳送帶0控制傳送帶 取01234567取地址5到R0碟取地址6到R1碟;將R0和R1炒好倒入R2碟;送R2碟到地址7中;香菇菜心 圖1.3菜譜設(shè)置完畢后,理想廚房系統(tǒng)開始自動(dòng)化的工作。1),廚房管理員根據(jù)PC碟子中的數(shù)字“0”,知道要到冰箱地址為0的格子中取第一條指令(即加工步驟)。于是,廚房管理員向控制傳送帶上送出一個(gè)“取”信號(hào),然后馬上將PC碟中的數(shù)字“0”復(fù)制后放到地址傳送帶上。這兩個(gè)信號(hào)都會(huì)到達(dá)自動(dòng)冰箱。自動(dòng)冰箱收到這兩個(gè)信號(hào)后,將0號(hào)格的內(nèi)容復(fù)印件“取地址5到R0碟”放到材料傳送帶上,送往理想廚房。理想廚房收到后,將這條指令放到IR碟中。然后,廚房管理員將PC碟中的原來(lái)值增加1,以便為取下一條指令做好準(zhǔn)備。取指令周期完成后,理想廚房系統(tǒng)處于如下圖1.4狀態(tài): 理想廚房 自動(dòng)冰箱 碟名 碟中物品 地址 冰箱格子中物品R0R1 廚具R2 廚師PC 1 廚房管理員IR 取地址5到R0碟 材料傳送帶地址傳送帶控制傳送帶01234567取地址5到R0碟取地址6到R1碟;將R0和R1炒好倒入R2碟;送R2碟到地址7中;香菇菜心 圖1.4 廚房管理員讀到指令存放碟(即IR碟)中的加工步驟后,知道要到冰箱地址號(hào)為5的格子中去取原材料,并且取來(lái)后要放到R0碟中。因此,管理員向控制傳送帶上送出一個(gè)“取”信號(hào),然后馬上將5這個(gè)數(shù)放到地址傳送帶上。 冰箱收到“取”信號(hào)后,知道理想廚房要取物品。然后,冰箱從地址傳送帶得到了5,于是冰箱將地址為5的格子中的物品“香菇”取出來(lái),放到材料傳送帶上。 材料傳送帶上的物品“香菇”,傳到理想廚房后,按照指令的要求(通過(guò)廚房?jī)?nèi)部的傳送帶)送到了R0碟中。第一條指令執(zhí)行完后,理想廚房系統(tǒng)處于如下圖1.5所示的狀態(tài):理想廚房 自動(dòng)冰箱 碟名 碟中物品 地址 冰箱格子中物品R0 香菇R1 廚具R2 廚師PC 1 廚房管理員IR 取地址5到R0碟 材料傳送帶 地址傳送帶 5控制傳送帶 取01234567取地址5到R0碟取地址6到R1碟;將R0和R1炒好倒入R2碟;送R2碟到地址7中;香菇菜心圖1.52)接下來(lái),開始執(zhí)行下一條指令的取指周期,類似于前一條指令,在取指周期完成后,理想廚房系統(tǒng)處于如下圖1.6狀態(tài):理想廚房 自動(dòng)冰箱 碟名 碟中物品 地址 冰箱格子中物品R0 香菇R1 廚具R2 廚師PC 2 廚房管理員IR 取地址6到R1碟; 材料傳送帶地址傳送帶 1控制傳送帶 取01234567取地址5到R0碟取地址6到R1碟;將R0和R1炒好倒入R2碟;送R2碟到地址7中;香菇菜心圖1.6管理員分析指令存放碟中的加工步驟(指令)后,知道要到冰箱地址為6的格子中去取原材料,并且放到R1碟中。因此,管理員向控制傳送帶上發(fā)一個(gè)“取”信號(hào),然后馬上將6這個(gè)數(shù)放到地址傳送帶上。 冰箱收到“取”信號(hào)后,知道理想廚房要取東西,然后,冰箱從地址傳送帶得到了6,于是冰箱將地址為6的格子中的物品“菜心”取出,放到材料傳送帶上。 材料傳送帶上的物品“菜心”,傳到理想廚房后,按照指令的要求通過(guò)廚房?jī)?nèi)部的傳送帶被自動(dòng)送到R1碟中。第二條指令執(zhí)行完后理想廚房系統(tǒng)處于如下圖1.7狀態(tài): 理想廚房 自動(dòng)冰箱碟名 碟中物品 地址 冰箱格子中物品R0 香菇R1 菜心 廚具R2 廚師PC 2 廚房管理員IR 取地址6到R1碟; 材料傳送帶地址傳送帶 6控制傳送帶 取01234567取地址5到R0碟取地址6到R1碟;將R0和R1炒好倒入R2碟;送R2碟到地址7中;香菇菜心圖1.73)在第3條指令的取指周期完成后,理想廚房系統(tǒng)處于如下圖1.8狀態(tài):理想廚房 自動(dòng)冰箱碟名 碟中物品 地址 冰箱格子中物品R0 香菇R1 菜心 廚具R2 廚師PC 3 廚房管理員IR將R0和R1炒好倒入R2碟;材料傳送帶地址傳送帶 2控制傳送帶01234567取地址5到R0碟取地址6到R1碟;將R0和R1炒好倒入R2碟;送R2碟到地址7中;香菇菜心 圖 1.8 廚房管理員看到IR碟中的內(nèi)容后,命令廚師將R0碟和R1碟中的原材料倒入鍋中炒好后,倒入R2碟中。完成后如圖1.9理想廚房 自動(dòng)冰箱碟名 碟中物品 地址 冰箱格子中物品R0香菇R1菜心 廚具R2香菇菜心 廚師PC 3 廚房管理員IR將R0和R1炒好倒入R2碟;材料傳送帶地址傳送帶控制傳送帶01234567取地址5到R0碟取地址6到R1碟;將R0和R1炒好倒入R2碟;送R2碟到地址7中;香菇菜心 圖1.94)第4條指令在取指令周期完成后,理想廚房系統(tǒng),處于如下圖1.10狀態(tài):理想廚房 自動(dòng)冰箱碟名 碟中物品 地址 冰箱格子中物品R0香菇R1菜心 廚具R2香菇菜心 廚師PC 4 廚房管理員IR送R2碟到地址7中;材料傳送帶地址傳送帶控制傳送帶01234567取地址5到R0碟取地址6到R1碟;將R0和R1炒好倒入R2碟;送R2碟到地址7中;香菇菜心 圖1.10下面開始執(zhí)行“送R2碟到地址7中”這條指令。廚房管理員分析指令存放碟中的加工步驟后,知道要將R2碟中的物品,送到冰箱地址為7的格子中去存放。于是,管理員向控制傳送帶上發(fā)一個(gè)“存”信號(hào),然后馬上將7這個(gè)數(shù)放到地址傳送帶上,最后將R2碟中的物品“香菇菜心”放到材料傳送帶上,送往冰箱。 冰箱收到“存”信號(hào)后,知道理想廚房要存放物品,然后,冰箱從地址傳送帶得到了7,于是自動(dòng)冰箱(的機(jī)械手)在材料傳送帶旁,等待從理想廚房R2碟傳來(lái)物品“香菇菜心”,一旦到達(dá),自動(dòng)冰箱就將其取下,并將其存放到地址號(hào)為7的格子中。完成后系統(tǒng)狀態(tài)如圖1.11:理想廚房 自動(dòng)冰箱碟名 碟中物品 地址 冰箱格子中物品R0香菇R1菜心 廚具R2香菇菜心 廚師PC 4 廚房管理員IR送R2碟到地址7中;材料傳送帶地址傳送帶控制傳送帶01234567取地址5中到R0碟取地址6中到R1碟;將R0和R1炒好倒入R2碟;送R2碟到地址7中;香菇菜心香菇菜心 圖1.11至此,香菇菜心這道菜終于大功告成了。122 現(xiàn)在,我們通過(guò)一些問(wèn)答,對(duì)已經(jīng)學(xué)到的重點(diǎn)知識(shí)作一個(gè)概括和討論:?jiǎn)栴}1.理想廚房將要執(zhí)行的炒某道菜的所有指令是以何種形式,存放在何處的?答:理想廚房將要執(zhí)行的加工某道菜的全部指令(即加工步驟),必須按照加工的先后順序,由小地址號(hào)到大地址號(hào)連續(xù)地存放在自動(dòng)冰箱的多個(gè)格子中。也就是說(shuō):如果正在執(zhí)行的指令,所在的地址是n的話;下一條要執(zhí)行的指令,一定是在地址為n1的冰箱的格子中除非剛剛執(zhí)行的是一條跳轉(zhuǎn)指令。 問(wèn)題2.理想廚房如何才能從自動(dòng)冰箱取到一條指令?取到指令后存放到何處?答:為了取一條指令,廚房管理員首先要把PC碟中的數(shù)據(jù)(假設(shè)是8)復(fù)制后放到地址傳送帶上,送往自動(dòng)冰箱;與此同時(shí),要在控制傳送帶上發(fā)送一個(gè)“取”信號(hào),送往自動(dòng)冰箱;然后,廚房管理員還要把PC碟中的數(shù)據(jù)加上1(PC碟中的數(shù)據(jù)現(xiàn)在變成了9,以便為取下一條指令作準(zhǔn)備)。 自動(dòng)冰箱根據(jù)從控制傳送帶上得到的“取”信號(hào),知道理想廚房要取東西;根據(jù)從地址傳送帶上得到的地址信號(hào):8。自動(dòng)冰箱由此知道理想廚房要取第8格中的物品。于是自動(dòng)冰箱將第8格的物品取出,放到材料傳送帶上。廚房管理員收到自動(dòng)冰箱從材料傳送帶上傳來(lái)的第8格中指令后,把它放在IR碟中。由以上過(guò)程可知,哪怕是要完成取一條指令這樣的一件微不足道的小事,對(duì)于理想廚房系統(tǒng)來(lái)說(shuō)也是非常麻煩的。廚房管理員、PC碟、地址傳送帶、控制傳送帶、自動(dòng)冰箱、材料傳送帶、IR碟,缺一不可,而且相互之間要密切配合、協(xié)調(diào)工作才能完成此事。廚房管理員在其中起著核心控制作用。 與取指令類似,理想廚房在執(zhí)行一條指令時(shí),經(jīng)常也是如此的麻煩和白癡(比如從冰箱取原材料的指令或送菜肴到冰箱的指令)。問(wèn)題3.如果沒(méi)有保存在冰箱中的菜譜,理想廚房的廚師是否能夠炒出一道菜來(lái)?答:決對(duì)不會(huì)!廚師只會(huì)在廚房管理員的命令下,每次僅僅做 “炒”、 “煎”、“蒸”、“烤”、“炸”和“煮”等一些固定數(shù)量的基本操作中的一個(gè)基本操作。在這個(gè)廚師的大腦中,沒(méi)有任何一道菜的全部加工過(guò)程。他也學(xué)不會(huì)新的基本炒菜動(dòng)作。他只會(huì)一次次地、忠實(shí)地、快速地按照廚房管理員的命令,每次只做一個(gè)單一步驟的加工操作。而廚房管理員向廚師發(fā)出的加工命令,也都是來(lái)自于他所取到的菜譜中的指令。沒(méi)有保存在冰箱中的菜譜,理想廚房系統(tǒng)中的管理員和廚師根本加工不出任何一道菜肴來(lái)。理想廚房系統(tǒng)的炒菜“智能”來(lái)自于菜譜的編寫者。正是由于人們編出來(lái)的可以讓理想廚房執(zhí)行的各種各樣的菜譜,才使得原本白癡般的、能力極為有限的理想廚房系統(tǒng)在炒菜方面顯得幾乎無(wú)所不能!問(wèn)題4 編寫特殊菜譜很困難嗎?答:確實(shí)很難編寫。要想理想廚房系統(tǒng)做出任何一道菜肴,都要編寫出它能自動(dòng)執(zhí)行的特殊菜譜,這種菜譜要非常精確、無(wú)二義性。在這種菜譜中,要用冰箱地址號(hào)來(lái)取代原料的名稱(這導(dǎo)致了菜譜很難看懂)。還要知道,廚師究竟會(huì)做哪幾種基本炒菜動(dòng)作、廚房管理員懂得哪幾種加工命令。此外,原料所放的位置不同,菜譜的內(nèi)容也就有所不同,與給普通人看的菜譜有很大不同。問(wèn)題5 你能簡(jiǎn)要敘述一下,廚房管理員的工作步驟嗎?答:廚房管理員的工作完全是周期性的,即他永遠(yuǎn)在做:取指令分析指令發(fā)出控制命令要求各部件執(zhí)行指令這一種周期性的動(dòng)作。只要一啟動(dòng),理想廚房系統(tǒng)永遠(yuǎn)在按照這個(gè)周期性的動(dòng)作,一條一條的順序的取指令并執(zhí)行指令(如果遇到跳轉(zhuǎn)指令,則跳轉(zhuǎn)到指定地址去,繼續(xù)取下一條指令),不停地快速運(yùn)行著,直到停機(jī)或發(fā)生嚴(yán)重故障為止。理想廚房系統(tǒng)的工作原理,到此已經(jīng)全部介紹完畢。學(xué)完理想廚房系統(tǒng)的基本工作原理后,從整體上把握計(jì)算機(jī)的基本工作原理,就變成為一個(gè)比較輕松的名詞替換的小游戲了。1.3理想廚房系統(tǒng)與計(jì)算機(jī)系統(tǒng)術(shù)語(yǔ)對(duì)照表理想廚房的工作原理,與計(jì)算機(jī)的工作原理是極為類似的。下面首先給出兩個(gè)系統(tǒng)之間的術(shù)語(yǔ)對(duì)照表,見表1.1。表1.1術(shù)語(yǔ)對(duì)照表理想廚房系統(tǒng)電子數(shù)字計(jì)算機(jī)(簡(jiǎn)稱計(jì)算機(jī)) 1.硬件設(shè)備自動(dòng)冰箱(包含多個(gè)大小相等的格子)內(nèi)存(又稱為主存,包含很多大小相等的基本存儲(chǔ)單元) (冰箱中的)一個(gè)格子(內(nèi)存中的)一個(gè)基本存儲(chǔ)單元材料傳送帶數(shù)據(jù)總線地址傳送帶地址總線控制信號(hào)傳送帶控制總線理想廚房(包含以下設(shè)備)CPU(或稱微處理器,包含以下部件)廚師及炒菜設(shè)備算術(shù)邏輯單元ALU(又稱為運(yùn)算器)廚房管理員控制單元(又稱為控制器)通用臨時(shí)存放碟通用寄存器指令地址存放碟PC指令地址寄存器(又稱為程序計(jì)數(shù)器PC)指令存放碟IR指令寄存器(又稱為IR寄存器) 狀態(tài)存放碟狀態(tài)寄存器專用加工容器專用寄存器采購(gòu)員及配菜員輸入設(shè)備(鍵盤、鼠標(biāo)、網(wǎng)卡、U盤等)傳菜生輸出設(shè)備(顯示器、打印機(jī)、網(wǎng)卡、U盤等)自動(dòng)倉(cāng)庫(kù)外存(硬盤、U盤,但同時(shí)也屬于輸入輸出設(shè)備) 2.軟硬件之間的接口(編寫菜譜或程序的基本要素)冰箱格子的地址(即編號(hào))內(nèi)存中基本存儲(chǔ)單元的地址(即編號(hào))廚師可做的各種炒菜的基本動(dòng)作(蒸、炒、炸、煮等)運(yùn)算器可進(jìn)行的各種基本運(yùn)算(算術(shù)運(yùn)算、邏輯運(yùn)算等)碟子的名稱寄存器的編碼或代號(hào) 理想廚房可以執(zhí)行的所有各種加工動(dòng)作(指令)該類型計(jì)算機(jī)的指令集3.軟件特殊菜譜(機(jī)器語(yǔ)言形式的) 程序加工步驟(機(jī)器)指令原材料數(shù)據(jù) 炒好的菜信息(或稱為結(jié)果)精確的普通菜譜高級(jí)語(yǔ)言程序(又稱為源程序或源代碼) 簡(jiǎn)要的普通菜譜偽代碼4. 系統(tǒng)的使用者編寫特殊菜譜者用機(jī)器語(yǔ)言編程的程序員 編寫精確的普通菜譜者用高級(jí)程序設(shè)計(jì)語(yǔ)言編程的程序員理想廚房系統(tǒng)的大堂經(jīng)理和顧客計(jì)算機(jī)的用戶在計(jì)算機(jī)上運(yùn)行一個(gè)程序時(shí),上表中列出的計(jì)算機(jī)的各個(gè)部件會(huì)協(xié)同工作,完成任務(wù)(參見1.6節(jié))。如果沒(méi)有對(duì)理想廚房工作原理的詳細(xì)講解,由于出現(xiàn)了太多新的專業(yè)術(shù)語(yǔ)和名詞,人們決對(duì)很難在短時(shí)間內(nèi),全面把握和理解這個(gè)計(jì)算機(jī)系統(tǒng)的工作原理的(對(duì)于任何一個(gè)初學(xué)者,這都是一件極其困難的事)。1.4預(yù)備知識(shí):二進(jìn)制及相關(guān)知識(shí)簡(jiǎn)介: 人類有十個(gè)手指,所以偏愛十進(jìn)制記數(shù)法。可是,在人造數(shù)據(jù)處理設(shè)備中,使用十進(jìn)制記數(shù)法通常卻是愚蠢的選擇。雖然理論上可以使用任何進(jìn)制(比如十進(jìn)制)為基礎(chǔ)來(lái)制造計(jì)算機(jī),但現(xiàn)代計(jì)算機(jī)都是采用二進(jìn)制的數(shù)字電子信號(hào)(制造電子計(jì)算機(jī)為何采用數(shù)字信號(hào)而不用模擬信號(hào),不用其他進(jìn)制而采用二進(jìn)制,請(qǐng)參見本書附錄D )進(jìn)行工作的機(jī)器。也就是說(shuō),在現(xiàn)代計(jì)算機(jī)的內(nèi)部,只能以二進(jìn)制的形式來(lái)存儲(chǔ)、傳輸需要執(zhí)行的指令和需要加工的數(shù)據(jù)。 為了從底層徹底把握計(jì)算機(jī)的基本工作原理,讀者必須事先對(duì)二進(jìn)制的相關(guān)知識(shí)要有所了解。以下進(jìn)行簡(jiǎn)要介紹,更深入一些的討論請(qǐng)參見大學(xué)計(jì)算機(jī)基礎(chǔ)或微機(jī)原理等書籍。1.4.1 二進(jìn)制數(shù)的概念及其數(shù)制之間的轉(zhuǎn)換 首先,來(lái)看一張部分十進(jìn)制數(shù)與二進(jìn)制數(shù)的數(shù)值對(duì)照表: 十進(jìn)制數(shù) 所對(duì)應(yīng)的二進(jìn)制數(shù) (所對(duì)應(yīng)的十六進(jìn)制數(shù))0 0 01 1 12 10 23 11 34 100 45 101 56 110 67 111 78 1000 89 1001 910 1010 A11 1011 B12 1100 C13 1101 D14 1110 E15 1111 F16 10000 10表 1.2 部分十進(jìn)制數(shù)與二進(jìn)制數(shù)(和十六進(jìn)制數(shù))的數(shù)值對(duì)照表一般情況下,用n位二進(jìn)制可表示的最大正整數(shù)值是2n-1。比如:4位二進(jìn)制可表示的最大正整數(shù)是24-1=15(即1111)2 。可見,二進(jìn)制只能用兩個(gè)數(shù)字“0”和“1”來(lái)進(jìn)行計(jì)數(shù)。二進(jìn)制加法運(yùn)算的重要規(guī)則是: 1+1=10 ,即兩個(gè)1相加產(chǎn)生向高位的進(jìn)位。左邊是高位數(shù),右邊是低位數(shù)(此外,其它加法規(guī)則還有:1+0=1、0+1=0、0+0=0)。我們經(jīng)常用一對(duì)圓括號(hào)括住一個(gè)數(shù)值,并在圓括號(hào)外面加一個(gè)數(shù)字下標(biāo),來(lái)表示一個(gè)數(shù)是幾進(jìn)制數(shù)。比如(1011)10是一個(gè)十進(jìn)制數(shù);而(1011)2是一個(gè)二進(jìn)制數(shù)。142將二進(jìn)制整數(shù)轉(zhuǎn)化成十進(jìn)制整數(shù)一個(gè)十進(jìn)制的整數(shù),其數(shù)值可用以下展開式來(lái)表示:比如3785(3785)10=3103+7102+8101+5100 (1)我們把(1)式中10的幾次方稱為權(quán)重,權(quán)重左邊的乘數(shù)稱為系數(shù)。(1)式中共有4個(gè)系數(shù),從左到右依次是:“3”“7”“8”“5”。可見,在表示數(shù)值數(shù)據(jù)時(shí),越左邊的系數(shù)權(quán)重越大。權(quán)重中的基數(shù)(即底數(shù))與該進(jìn)制是一樣大的,在這里都是10。類似的,一個(gè)二進(jìn)制數(shù),其數(shù)值也可用以下展開式來(lái)表示:比如二進(jìn)制數(shù)1011(1011)2= 123+022+121 +120 (2)此二進(jìn)制數(shù)的值,等于十進(jìn)制的18+04+12+11=8+2+1=(11)10 (3) 由此可以得到:二進(jìn)制整數(shù)轉(zhuǎn)化成十進(jìn)制整數(shù)的一般方法:只要將該二進(jìn)制整數(shù)(即1011)展開后的(2)式中的每一位(小于2)的系數(shù)值,乘以這一位的轉(zhuǎn)化成十進(jìn)制數(shù)后的權(quán)重(即2的幾次方),然后再將逐個(gè)乘積項(xiàng)的數(shù)值(用十進(jìn)制加法規(guī)則)相加起來(lái)即可。深入一步:以上這種二進(jìn)制整數(shù)轉(zhuǎn)化成十進(jìn)制整數(shù)的方法,其實(shí)適合將一個(gè)任意R進(jìn)制數(shù)轉(zhuǎn)變成十進(jìn)制數(shù)。比如有8進(jìn)制數(shù)(305)8,就可展開為: (305)8=382+081+580 = 364+08+51=(197)10143 將十進(jìn)制整數(shù)轉(zhuǎn)化成二進(jìn)制數(shù):1. 將十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)的短除法: 把一個(gè)整數(shù)(比如89)從十進(jìn)制轉(zhuǎn)換成二進(jìn)制,需要用新基數(shù)2除這個(gè)數(shù)(89),余數(shù)(1)是結(jié)果左邊的下一位數(shù)字,商(44)是新的被除數(shù),整個(gè)過(guò)程直到商為0時(shí)終止。短除法就是按照以上規(guī)則,把要轉(zhuǎn)換的十進(jìn)制整數(shù)不斷的除以2然后取余數(shù),商作為新的被除數(shù),直到商為0的時(shí)候結(jié)束。然后把余數(shù)倒著寫出來(lái)。例如: 把84轉(zhuǎn)換成二進(jìn)制數(shù) 1244 222 211 25 22 21 20 89 0 0 1 1 0 1即: (89)10= (1011001)2深入一步 :任意的R進(jìn)制實(shí)數(shù)表示法一般情況下,任何一個(gè)R進(jìn)制實(shí)數(shù),都可以緊湊地表示為:(R通常是2,8,10,16中的某個(gè)數(shù)) (+ rnrn-1r1r0 . r-1r-2.r-m)R (其中的任何一個(gè)ri都是0到R-1之間的一個(gè)整數(shù))將任意一個(gè)R進(jìn)制數(shù)擴(kuò)大R倍(即乘以R),只需將小數(shù)點(diǎn)右移一位即可;類似地,將任意一個(gè)R進(jìn)制數(shù)縮小R倍(即除以R),只需將小數(shù)點(diǎn)左移一位即可。其中R=10是人們最為熟悉的十進(jìn)制數(shù),這種數(shù)的表示法,主要是由古代印度人發(fā)明的。任何一個(gè)R進(jìn)制數(shù),也都可以用多項(xiàng)式的展開表示為:+(rnRn+ rn-1Rn-1+ r1R1+ r0R0 + r-1R-1+ r-2R-2+ r-mR-m) (ri稱為系數(shù),Ri稱為權(quán)重)R進(jìn)制數(shù)值的多項(xiàng)式展開表示法中,不使用小數(shù)點(diǎn)。一個(gè)數(shù)的各種進(jìn)制表示法之間的數(shù)值是一樣大的,只不過(guò)表現(xiàn)形式不同而已。注意:短除法也適用于將一個(gè)十進(jìn)制整數(shù)轉(zhuǎn)換為一個(gè)任意R(R2)進(jìn)制的整數(shù),只需將除數(shù)由2替換為R即可(參見例題 )??蛇x練習(xí):將十進(jìn)制整數(shù)89用短除法轉(zhuǎn)化為8進(jìn)制整數(shù)。*1.4.4將十進(jìn)制純小數(shù)轉(zhuǎn)化成二進(jìn)制純小數(shù)10進(jìn)制純小數(shù)轉(zhuǎn)換為2進(jìn)制純小數(shù)的轉(zhuǎn)換過(guò)程,與整數(shù)的進(jìn)制轉(zhuǎn)換過(guò)程有些類似而又有些相反:不是用新的基數(shù)2除這個(gè)數(shù),而是用新基數(shù)2去乘它。乘法的進(jìn)位將成為答案右邊的下一位數(shù)字,乘法結(jié)果中的小數(shù)部分將成為新的被乘數(shù),整個(gè)過(guò)程直到乘法結(jié)果中的小數(shù)部分為0時(shí)終止。例如:把十進(jìn)制小數(shù)0.375轉(zhuǎn)換成二進(jìn)制小數(shù): 0.3752 = 0.750 0 /進(jìn)位0,小數(shù)點(diǎn)后第一位 0.752 = 1.50 1 /進(jìn)位1,小數(shù)點(diǎn)后第二位 0.5 2 =1.0 1 /進(jìn)位1,小數(shù)點(diǎn)后第三位 所以,(0.375)10=(0.011)21.5預(yù)備知識(shí):數(shù)和碼的含義和區(qū)別 如果計(jì)算機(jī)僅僅只能夠?qū)σ恍?shù)進(jìn)行數(shù)值運(yùn)算(在計(jì)算機(jī)剛發(fā)明的早期年代確實(shí)是如此),那么它的應(yīng)用范圍就很窄。然而,現(xiàn)代計(jì)算機(jī)的應(yīng)用范圍卻是極其廣泛的。根本原因在于:現(xiàn)代計(jì)算機(jī)不僅能對(duì)數(shù)進(jìn)行運(yùn)算,還能對(duì)各種各樣的“碼”進(jìn)行處理。所以,我們想要真正懂得計(jì)算機(jī)并且學(xué)好編程,就不僅要熟悉二進(jìn)制的“數(shù)”,還必須對(duì)二進(jìn)制的“碼”也有一個(gè)比較清晰的整體了解。以下這些內(nèi)容雖然比較繁瑣,然而理解起來(lái)卻并不太困難。151十進(jìn)制的數(shù)和碼:我們通過(guò)一個(gè)例子,先來(lái)來(lái)說(shuō)明十進(jìn)制數(shù)字系統(tǒng)中數(shù)與碼的區(qū)別如果3785用于表示數(shù),則越高位(即越左邊的位)的數(shù)字越重要(因?yàn)闄?quán)重越大,在十進(jìn)制數(shù)3785中,“3”的權(quán)重是103,而“5”的權(quán)重是100)。 而3785用于表示非數(shù)值的碼,則每一位都同樣重要。碼值僅相差一位,所表示的文字(或代表的事物)就可以有巨大的區(qū)別(比如:3785可代表漢字“前”,而3786可代表漢字“后”)。 十進(jìn)制的數(shù)字串“3785”,既可以表示一個(gè)值為三千七百八十五的十進(jìn)制數(shù),也可以表示一個(gè)碼為3785的漢字(或者表示任何別的什么10000個(gè)同類型事物中的碼值為3785的一個(gè)特定事物)。 對(duì)于數(shù)值可以進(jìn)行各種數(shù)學(xué)運(yùn)算,而對(duì)于表示非數(shù)值的碼進(jìn)行數(shù)學(xué)運(yùn)算,通常毫無(wú)意義。 152 二進(jìn)制的位、位串、字節(jié) 與十進(jìn)制一樣,二進(jìn)制數(shù)與二進(jìn)制碼也有類似的區(qū)別。只不過(guò)在二進(jìn)制中,只能用0和1組成的一個(gè)二進(jìn)制數(shù)字串,來(lái)構(gòu)成任何大小的數(shù)值或者表示具有任何含義的碼。我們先來(lái)熟悉一些與二進(jìn)制有關(guān)的術(shù)語(yǔ)。位:?jiǎn)蝹€(gè)二進(jìn)制數(shù)字不是0就是1,再?zèng)]有別的可能數(shù)字我們將其稱為“位”(bit)。位串及其長(zhǎng)度:任意多個(gè)二進(jìn)制“位”順序排列在一起(比如:11011011100),我們稱之為位串(有的教科書稱為“位模式”)。位串中數(shù)字的個(gè)數(shù),我們稱為位串的長(zhǎng)度。字節(jié)8位二進(jìn)制位串在計(jì)算機(jī)、通信及其大量相關(guān)應(yīng)用中,人們最為關(guān)心的是長(zhǎng)度為8位的二進(jìn)制位串。這是由于現(xiàn)代的絕大多數(shù)計(jì)算機(jī)和數(shù)字化的通信網(wǎng)絡(luò)設(shè)備,都是以8位二進(jìn)制位串作為計(jì)量(部件的)數(shù)據(jù)存儲(chǔ)容量和(傳輸過(guò)程中的)數(shù)據(jù)傳輸量的一種基本單位。我們把 一個(gè)8位二進(jìn)制位串稱為一個(gè)字節(jié)(Byte)。深入一步:二進(jìn)制數(shù)據(jù)存儲(chǔ)和傳輸中的一些常用單位“字節(jié)” (Byte)這個(gè)基本單位雖然是“位”這個(gè)最小二進(jìn)制單位的8倍,但在很多場(chǎng)合仍然顯得太小,更大的常用單位有(用B來(lái)表示Byte):千字節(jié): 1KB=1024B 兆字節(jié): 1MB=1024KB吉字節(jié): 1GB=1024MB每種單位之間都是1024倍的關(guān)系,而不是1000倍的關(guān)系。所以,我們常常會(huì)看到一些數(shù)據(jù)存儲(chǔ)設(shè)備標(biāo)出它的數(shù)據(jù)存儲(chǔ)容量是多少個(gè)KB、MB或GB;或者一根網(wǎng)線(或者一塊網(wǎng)卡)標(biāo)出它的數(shù)據(jù)傳輸量是每秒鐘傳輸多少個(gè)KB、MB或GB。153 二進(jìn)制的數(shù)和碼如果用一個(gè)位來(lái)表示整數(shù)值,只能表示0和1這兩個(gè)值中之一。大于1的整數(shù)值用一個(gè)“位”表示不了。如果用單個(gè)的“位”來(lái)表示碼,則只能用來(lái)對(duì)(同屬一種類型的)兩種不同事物進(jìn)行編碼。比如:用0表示“假”, 用1表示“真”; 用0表示“否”, 用1表示“是”;或者用 0 表示動(dòng)物“狗”,用 1 表示動(dòng)物“貓”;等等。如果用長(zhǎng)度為2的一個(gè)位串來(lái)表示整數(shù)值,則能夠表示00(即0)、01(即1)、10、11這4個(gè)整數(shù)值中的某一個(gè)。如果用長(zhǎng)度為2的位串來(lái)進(jìn)行編碼,由于有4(即22)個(gè)碼值可以用,則能夠用來(lái)對(duì)屬于同一類型的4個(gè)不同的事物(或狀態(tài))進(jìn)行編碼。比如 酸,甜,苦,辣、牛,馬,羊,豬、加,減,乘,除、A,B,C,D、趙,錢,孫,李等等。深入一步:編碼和解碼的一個(gè)實(shí)例 通過(guò)制定編碼規(guī)則,比如:可以用00表示“D”、01表示“C”、 10表示“B”、 11表示“A” ,這就構(gòu)成了一張表示4個(gè)字符的編碼解碼表(注1),見表1.2 。(注1):如果把00,01,10,11看成4個(gè)未婚男士(的代號(hào)),A,B,C,D看成4個(gè)未婚女士(的代號(hào))。所謂的“編碼解碼表”,只不過(guò)是所有男士與女士之間的一張快速配對(duì)表而已。用嚴(yán)格的數(shù)學(xué)術(shù)語(yǔ)來(lái)講,這實(shí)質(zhì)上是兩個(gè)集合00,01,10,11與 A,B,C,D 的所有元素之間的一張一對(duì)一的映射表。 二進(jìn)制碼字符00 D01 C10 B11 A表1.2 表示4個(gè)字符的編碼解碼表有了編碼解碼表,先通過(guò)對(duì)字符串“CAB”進(jìn)行編碼,就可以用一些碼值構(gòu)成的二進(jìn)制位串“011110”來(lái)間接地存儲(chǔ)和傳輸這個(gè)字符串。因?yàn)檫@樣既安全,又方便(注2)。到達(dá)目的地后,接收方也要有同樣的一張字符的“編碼解碼表”,才能將這種接收到的二進(jìn)制位串,翻譯成它的本來(lái)意義。比如將二進(jìn)制位串011110翻譯成字符串“CAB”。這個(gè)過(guò)程就稱為解碼。 編碼 發(fā)送 接收 解碼 CAB011110011110CAB 圖: 字符串的編碼、發(fā)送、接收、解碼全過(guò)程(注2)一個(gè)二進(jìn)制位串,用二進(jìn)制的電子數(shù)字信號(hào)是很容易表示、存儲(chǔ)和傳輸?shù)?。而任何用文字表達(dá)的非數(shù)值數(shù)據(jù),不通過(guò)某種編碼,是無(wú)法直接用二進(jìn)制的電子數(shù)字信號(hào)來(lái)表示、存儲(chǔ)和傳送的。如果用一個(gè)字節(jié)來(lái)表示無(wú)符號(hào)的整數(shù),則能夠表示28=256個(gè)整數(shù)值。分別是從0到255,對(duì)應(yīng)于二進(jìn)制數(shù)從(00000000)2到(11111111)2 。 如果用一個(gè)字節(jié)來(lái)進(jìn)行編碼,則能夠用來(lái)對(duì)256種同類事物進(jìn)行編碼。計(jì)算機(jī)中一種常用的對(duì)英文文本(即文件)中常用字符的編碼規(guī)則,通常是采用一個(gè)字節(jié)來(lái)對(duì)英文字符進(jìn)行編碼的“ASCII碼表”(細(xì)節(jié)參見附錄B)。借助于ASCII碼表,我們就可對(duì)一個(gè)英文文本進(jìn)行編碼,轉(zhuǎn)換成一串長(zhǎng)長(zhǎng)的二進(jìn)制ASCII碼形式的位串后(但實(shí)質(zhì)上還是一個(gè)英文文本),送到計(jì)算機(jī)中進(jìn)行編輯、加工、保存和(通過(guò)網(wǎng)絡(luò))進(jìn)行遠(yuǎn)程通信。 在不必區(qū)分加工處理對(duì)象到底是數(shù)還是碼的場(chǎng)合,我們可將其統(tǒng)稱為數(shù)據(jù)。有了這些預(yù)備知識(shí),現(xiàn)在我們終于可以整體而又簡(jiǎn)明地介紹計(jì)算機(jī)的工作原理了。16電子數(shù)字計(jì)算機(jī):電子數(shù)字計(jì)算機(jī)(以后簡(jiǎn)稱為計(jì)算機(jī))是一個(gè)通過(guò)執(zhí)行程序,把數(shù)據(jù)加工成信息的電子數(shù)字設(shè)備。類似于理想廚房系統(tǒng),計(jì)算機(jī)也是由硬件(中央處理單元、內(nèi)存和三套總線、外圍設(shè)備)和軟件(程序)組成。1.6.1計(jì)算機(jī)的硬件 計(jì)算機(jī)硬件主要由以下四個(gè)實(shí)物部件構(gòu)成:中央處理單元、內(nèi)存、三套總線和外圍設(shè)備。內(nèi)存(相當(dāng)于自動(dòng)冰箱):內(nèi)存主要是由極大量的大小相同的基本存儲(chǔ)單元(相當(dāng)于自動(dòng)冰箱的格子)組成。每個(gè)基本存儲(chǔ)單元都具有一個(gè)從0開始順序遞增的唯一編號(hào),稱為內(nèi)存基本存儲(chǔ)單元的地址(相當(dāng)于冰箱格子的編號(hào)),但在很多書中(包括本書)經(jīng)常將其簡(jiǎn)稱為內(nèi)存地址?,F(xiàn)代計(jì)算機(jī),大多數(shù)是以字節(jié)(而不是以更小的“位”)作為基本存儲(chǔ)單元,來(lái)分割內(nèi)存的。內(nèi)存負(fù)責(zé)臨時(shí)保存正在執(zhí)行(和將要執(zhí)行)的程序的指令序列、程序要加工的數(shù)據(jù)和處理結(jié)果。這些內(nèi)容在內(nèi)存中,全部都是以二進(jìn)制位串形式存放的。如下圖1.14所示: 內(nèi)存地址 內(nèi)存基本存儲(chǔ)單元中 存放的位串(即字節(jié))110101101101001110110101011011110101110100000000100000000000000010000001000000001000001000000000100001000000000010000101 圖 1.14 內(nèi)存片段示意圖:由具有唯一地址的大量?jī)?nèi)存基本存儲(chǔ)單元構(gòu)成的內(nèi)存。在每個(gè)基本存儲(chǔ)單元中,可以存放長(zhǎng)度為一個(gè)字節(jié)的指令或數(shù)據(jù)。一條指令(或者一個(gè)數(shù)據(jù))如果太長(zhǎng),一個(gè)基本存儲(chǔ)單元(注)存放不下,就要用內(nèi)存地址連續(xù)的幾個(gè)基本存儲(chǔ)單元來(lái)存放。(注)不少教科書把內(nèi)存的一個(gè)基本存儲(chǔ)單元稱作為一個(gè)字節(jié)。n個(gè)基本存儲(chǔ)單元就稱為n個(gè)字節(jié)。三套總線(相當(dāng)于三條傳送帶):分別是數(shù)據(jù)總線、地址總線和控制總線,負(fù)責(zé)中央處理單元與內(nèi)存之間的通信及數(shù)據(jù)(包括程序中的指令、數(shù)據(jù)和信息)傳送。中央處理單元,簡(jiǎn)稱CPU(相當(dāng)于理想廚房):負(fù)責(zé)通過(guò)三套總線,到內(nèi)存中去取程序(相當(dāng)于菜譜)中的指令(相當(dāng)于加工步驟),并根據(jù)指令對(duì)數(shù)據(jù)(相當(dāng)于原材料)進(jìn)行運(yùn)算處理(相當(dāng)于加工原材料)以及進(jìn)行相關(guān)的控制工作。中央處理單元中的主要部件有:控制器或稱為控制單元(相當(dāng)于廚房管理員)、運(yùn)算器(即ALU,相當(dāng)于廚師加炊具)和一些寄存器(相當(dāng)于廚房中的碟子)。外圍設(shè)備(相當(dāng)于配菜員或傳菜生)包括輸入設(shè)備(鍵盤、鼠標(biāo)、網(wǎng)卡、數(shù)碼相機(jī)、麥克風(fēng)等)、輸出設(shè)備(顯示器、打印機(jī)、網(wǎng)卡、音箱等)和外存(硬盤、U盤、光盤等)。包含機(jī)械部件的外圍設(shè)備,其工作速度比計(jì)算機(jī)中的純電子器件(CPU、內(nèi)存、三套總線)慢得多。在本章中,我們暫不對(duì)外圍設(shè)備的工作原理進(jìn)行討論(在最后一章進(jìn)行講解)。計(jì)算機(jī)結(jié)構(gòu)示意圖,如圖1.13所示地址總線數(shù)據(jù)總線控制總線CPU內(nèi)存I/O設(shè)備I/O設(shè)備 圖1.13計(jì)算機(jī)結(jié)構(gòu)示意圖 要替換1.6.2計(jì)算機(jī)的軟件 構(gòu)成計(jì)算機(jī)的部件中,還有一個(gè)無(wú)重量的、無(wú)體積的、不會(huì)損壞、可經(jīng)常更換的,極為重要的軟件部件,即命令計(jì)算機(jī)如何進(jìn)行工作的信息流程序。程序是由一條條指令順序組成的指令序列(相當(dāng)于菜譜中的一系列加工步驟)。 構(gòu)成程序的指令序列,必須按執(zhí)行的先后順序依次存放在內(nèi)存中。計(jì)算機(jī)的構(gòu)成簡(jiǎn)圖(此圖沒(méi)有包括外圍設(shè)備)如圖1.15所示:中央處理單元(CPU) 內(nèi)存 寄存器名 寄存器中物品 地址 存儲(chǔ)單元中存放程序或數(shù)據(jù)R0R1 R2 運(yùn)算器 PC 控制器IR 數(shù)據(jù)總線地址總線控制總線 000001010011100101110111 指令1指令2指令3數(shù)據(jù)數(shù)據(jù)圖1.15計(jì)算機(jī)系統(tǒng)的構(gòu)成簡(jiǎn)圖圖1.15所示計(jì)算機(jī)的CPU中各種寄存器的作用:R0、R1、R2是一些通用寄存器,用來(lái)臨時(shí)存放從內(nèi)存取來(lái)的數(shù)據(jù)或運(yùn)算得到的結(jié)果。PC寄存器:存放下一條要執(zhí)行的指令位于內(nèi)存的哪個(gè)存儲(chǔ)單元中。IR寄存器:用來(lái)存放剛從內(nèi)存取過(guò)來(lái)的馬上要執(zhí)行的指令。 1.6.3計(jì)算機(jī)指令執(zhí)行的全過(guò)程指令的格式 任何類型的計(jì)算機(jī),指令的通常格式為: 操作碼 操作碼告訴計(jì)算機(jī)要做什么事,操作數(shù)告訴計(jì)算機(jī)對(duì)存放在哪里的數(shù)(或什么數(shù))做這件事。操作碼是所有指令必須有的,一般的指令通常有一到三個(gè)操作數(shù)。但有些指令沒(méi)有操作數(shù)(這通常是由于這種指令的操作數(shù)默認(rèn)是在某個(gè)或某幾個(gè)寄存器中)。我們?cè)诘?2章將再次深入一步討論這個(gè)問(wèn)題。 比如在一臺(tái)極簡(jiǎn)單的計(jì)算機(jī)上,可以用操作碼00001表示加法、00010表示減法,等等。注意:指令在計(jì)算機(jī)內(nèi)部實(shí)際上都是二進(jìn)制位串。指令執(zhí)行的全過(guò)程與理想廚房執(zhí)行加工步驟類似,中央處理單元(CPU)執(zhí)行指令的過(guò)程,也完全是周期性的。控制器首先要根據(jù)PC寄存器中的值(這個(gè)值指示將要執(zhí)行的指令,位于內(nèi)存的哪一個(gè)存儲(chǔ)單元中),通過(guò)三套總線密切配合,到內(nèi)存中去取這條指令。取到CPU并把它放到指令寄存器 (即IR寄存器) 之后,PC寄存器中的原來(lái)值,將會(huì)加上L(L是剛?cè)〉降倪@條指令的字節(jié)數(shù)),以便為取下一條指令做準(zhǔn)備。 控制器對(duì)取到的該條指令進(jìn)行譯碼,然

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論