文章編號:1672-5913(2008)06-0069-03
摘要:本文根據(jù)筆者的親身體驗(yàn),結(jié)合實(shí)際具體分析了給數(shù)學(xué)系學(xué)生講授微機(jī)原理課程的指導(dǎo)思想、技術(shù)特點(diǎn)、知識(shí)結(jié)構(gòu)以及所遇到的問題和解決方法,系統(tǒng)闡述了學(xué)習(xí)該課程的重要意義。
關(guān)鍵詞:微機(jī)原理;教學(xué)大綱;實(shí)驗(yàn);成績
中圖分類號:G642
文獻(xiàn)標(biāo)識(shí)碼:B
1引言
2006年春,我校數(shù)學(xué)科學(xué)學(xué)院領(lǐng)導(dǎo)面對本科生就業(yè)形式的嚴(yán)峻局面,系統(tǒng)分析了本科生就業(yè)之愈演愈烈的市場化趨勢,同時(shí)響應(yīng)學(xué)生對學(xué)習(xí)計(jì)算機(jī)知識(shí)的強(qiáng)烈要求,決定開設(shè)“微機(jī)原理”選修課,計(jì)劃安排54學(xué)時(shí),筆者擔(dān)任主講教師。
一般認(rèn)為,“微機(jī)原理”的前導(dǎo)課程是:“電路分析”、“模擬電子技術(shù)”和“數(shù)字電子技術(shù)”。而數(shù)學(xué)專業(yè)的學(xué)生完全沒有接受過這些課程的訓(xùn)練,為此,筆者經(jīng)過寒假期間一個(gè)月的精心策劃,擬訂了一套教學(xué)大綱。但要在54個(gè)學(xué)時(shí)完成教學(xué)任務(wù),尤其是針對這些沒有經(jīng)過專業(yè)電子技術(shù)訓(xùn)練的授課對象,必須要有嚴(yán)格的教學(xué)計(jì)劃和周到的實(shí)驗(yàn)準(zhǔn)備。限于經(jīng)費(fèi)和實(shí)驗(yàn)場地,筆者申請購買了兩套清華大學(xué)科教儀器廠生產(chǎn)的TPC2003A實(shí)驗(yàn)設(shè)備,一套用于課堂演示實(shí)驗(yàn),一套用于興趣小組課后實(shí)驗(yàn)練習(xí)。
18周教學(xué)(每周3學(xué)時(shí))完成過后,選修該課程的近40名學(xué)生的考試通過率超過了85%,教師得到的由學(xué)生參與的教學(xué)質(zhì)量評估分?jǐn)?shù)達(dá)到86.9分,獲得絕大多數(shù)學(xué)生的認(rèn)可。更可喜的是,董建強(qiáng)同學(xué)的畢業(yè)設(shè)計(jì)“北京市花園橋路口交通燈設(shè)計(jì)”運(yùn)用計(jì)算機(jī)工作原理和接口技術(shù),結(jié)合線性優(yōu)化理論,成功編寫了匯編語言程序,并在TPC2003A演示實(shí)現(xiàn),在眾多畢業(yè)生中脫穎而出,經(jīng)專家評審,被評為校級優(yōu)秀畢業(yè)設(shè)計(jì)。
2教學(xué)指導(dǎo)思想的確立
目前還沒有專門為數(shù)學(xué)專業(yè)編寫的“微機(jī)原理”教材,當(dāng)然也無此必要。教學(xué)的關(guān)鍵取決于授課教師的理論素養(yǎng)、知識(shí)結(jié)構(gòu)、教學(xué)指導(dǎo)思想和課堂授課經(jīng)驗(yàn)。筆者曾長期擔(dān)任數(shù)學(xué)專業(yè)的“C語言程序設(shè)計(jì)”和“數(shù)據(jù)結(jié)構(gòu)”的教學(xué)工作,深感學(xué)生計(jì)算機(jī)基本知識(shí)的匱乏。譬如對變量的理解長期局限于邏輯符號,對存儲(chǔ)空間沒有意識(shí),難以建立牢固的指針概念,“數(shù)據(jù)結(jié)構(gòu)”所確立的數(shù)據(jù)存儲(chǔ)模式不能形成物理概念,缺乏基本的計(jì)算機(jī)思維;同時(shí),對文件的訪問技術(shù)也無法深入到物理層面,至于鍵盤訪問等接口技術(shù)更是難以貫徹。致使授課教師不得不花費(fèi)大量時(shí)間為學(xué)生建立計(jì)算機(jī)的物理操作觀念,勢必延誤正常教學(xué)工作的順利進(jìn)行。因而導(dǎo)致“C語言程序設(shè)計(jì)”課程由原來的54學(xué)時(shí)擴(kuò)展為72學(xué)時(shí),但依然未能從根本上解決問題。
鑒于以上原因,筆者將“微機(jī)原理”課程教學(xué)的基本指導(dǎo)思想定位為:以培養(yǎng)數(shù)學(xué)專業(yè)學(xué)生的計(jì)算機(jī)修養(yǎng)為主旨,把握計(jì)算機(jī)各個(gè)邏輯模塊的總線結(jié)構(gòu),建立數(shù)據(jù)存儲(chǔ)的物理觀念,了解數(shù)據(jù)運(yùn)算的物理流程,確立CPU和存儲(chǔ)器的核心地位,解決基本的數(shù)據(jù)輸入輸出問題。
長期以來,從事“微機(jī)原理”教學(xué)工作的教師有意無意地堅(jiān)守著這樣一個(gè)觀念:學(xué)習(xí)“微機(jī)原理”課程的目的是讓學(xué)生掌握計(jì)算機(jī)的硬件組織原理,為將來從事計(jì)算機(jī)硬件的設(shè)計(jì)工作打下堅(jiān)實(shí)的基礎(chǔ)。從教材編寫到課堂教學(xué)以及實(shí)驗(yàn)操作過程,這個(gè)觀念牢牢地占據(jù)著統(tǒng)治地位。不光是教師講課辛苦,就是學(xué)生也不堪重負(fù)。在這個(gè)觀念的主導(dǎo)下,很多信息工程類的非硬件專業(yè)開始壓縮甚至砍掉這門重要的計(jì)算機(jī)基礎(chǔ)課程,偏向于軟件編程。如前所述,在傳統(tǒng)的教學(xué)觀念里,一個(gè)專業(yè)要開設(shè)這門課程,就要另外開設(shè)三門以上的前導(dǎo)課程,不但占用大量的教學(xué)資源,而且短時(shí)期似乎看不到什么效果。致使許多專業(yè)陷入非常難堪的境地,而“微機(jī)原理”則變成了專業(yè)教學(xué)課程中的雞肋。
導(dǎo)致以上尷尬局面的根本原因,就是忽略了“微機(jī)原理”在培養(yǎng)學(xué)生計(jì)算機(jī)修養(yǎng)上的重要作用。程序設(shè)計(jì)尤其是基于面向?qū)ο蟮默F(xiàn)代程序設(shè)計(jì)技術(shù)要求學(xué)生必須深入理解計(jì)算機(jī)的物理工作流程,在進(jìn)程管理、輸入輸出管理、文件管理以及CPU的使用技術(shù)上,如果沒有底層知識(shí),是無法基于現(xiàn)有的操作系統(tǒng)編寫出健壯、高效的應(yīng)用程序。
3授課大綱的擬訂與教學(xué)實(shí)踐
教學(xué)大綱是在明確的教學(xué)指導(dǎo)思想的基礎(chǔ)上完成的。首先,建立總線結(jié)構(gòu)思想。這是從通信角度把握計(jì)算機(jī)各個(gè)邏輯模塊統(tǒng)一協(xié)調(diào)工作的整體操作思路??偩€結(jié)構(gòu)確定計(jì)算機(jī)的基本組成原則,建立各種總線類型的分工,使計(jì)算機(jī)的各個(gè)模塊形成一個(gè)有機(jī)整體??偩€結(jié)構(gòu)必然存在競爭冒險(xiǎn),為了規(guī)避信號沖突,必須考慮優(yōu)先級問題。通過總線結(jié)構(gòu)的深入講解,使學(xué)生對計(jì)算機(jī)產(chǎn)生整體概念,突顯系統(tǒng)分析思維,避免在后續(xù)課程中陷入先入為主,無法建立計(jì)算機(jī)系統(tǒng)思維的混亂局面。但總線結(jié)構(gòu)的教學(xué)重點(diǎn)放在總線分類和相互關(guān)系上,旨在把握計(jì)算機(jī)整體結(jié)構(gòu),認(rèn)識(shí)到CPU、存儲(chǔ)器、I/O接口等在通信關(guān)系上的統(tǒng)一性和操作上的一致性。對總線控制的CPU控制和DMA控制只做技術(shù)性介紹。使學(xué)生理解CPU為什么要放棄對總線的控制權(quán)以及DMA控制器存在的意義。當(dāng)然,課程一開始就講解總線結(jié)構(gòu)會(huì)使許多同行難以接受,因?yàn)榇蠖鄶?shù)教材將這一部分內(nèi)容放在整個(gè)課程的后三分之一。然而,從培養(yǎng)學(xué)生的計(jì)算機(jī)修養(yǎng)、建立計(jì)算機(jī)思維的角度考慮,放到第一部分講解是符合知識(shí)的建立過程的,那就是先規(guī)劃整體,再分塊創(chuàng)建,形成一棵完整的關(guān)于計(jì)算機(jī)結(jié)構(gòu)的知識(shí)樹,總線結(jié)構(gòu)正是這棵樹的根。
其次,筆者在教學(xué)過程中著重確立了CPU和存儲(chǔ)器的核心地位。深入講解CPU與存儲(chǔ)器是一個(gè)不可分割的整體,是一切算法實(shí)現(xiàn)的核心。重點(diǎn)放在CPU和存儲(chǔ)器的相互關(guān)系的講解上,決不過多地糾纏時(shí)序過程。在物理實(shí)體上形成一個(gè)較高的抽象,使CPU和存儲(chǔ)器的講解保持在同一個(gè)授課層面上,而不是象傳統(tǒng)教材中將兩者遠(yuǎn)遠(yuǎn)分離,比如某著名教材《微型計(jì)算機(jī)技術(shù)及應(yīng)用》將處理器放在第2章,而存儲(chǔ)器放在第12章,這也是傳統(tǒng)的授課方案,強(qiáng)調(diào)“按部就班”。然而筆者在具體教學(xué)過程中注重于CPU和存儲(chǔ)器的邏輯結(jié)構(gòu)。對于前者,是以ALU為中心的寄存器的集合,實(shí)現(xiàn)一個(gè)基本算法單元;對于后者,深入講解物理地址和邏輯地址的關(guān)系,充分建立尋址空間的概念。筆者始終以1MB的存儲(chǔ)空間為例,務(wù)必使學(xué)生明白CPU的基本尋址方案,讓學(xué)生理解一個(gè)復(fù)雜的算法的實(shí)現(xiàn)不單是依靠CPU自身,而是與數(shù)據(jù)的存儲(chǔ)策略密切相關(guān)的。這樣,不但為“C語言程序設(shè)計(jì)”課程的指針變量的建立埋下伏筆,也為“數(shù)據(jù)結(jié)構(gòu)”課程的深入理解奠定思想基礎(chǔ)。
再次,將系統(tǒng)指令和匯編語言緊密結(jié)合,既強(qiáng)調(diào)助記符觀念又綜合語言體系。尤其是在建立變量概念的時(shí)候,緊密結(jié)合存儲(chǔ)單元,體現(xiàn)數(shù)據(jù)的物理性的一面。學(xué)生對變量理解的深度將直接影響到對后續(xù)課程的學(xué)習(xí),特別是“C語言程序設(shè)計(jì)”。如果學(xué)生的理解僅限于邏輯符號層次上,或者對數(shù)據(jù)的認(rèn)識(shí)沒有物理概念,就無法靈活使用變量,在算法實(shí)現(xiàn)上往往陷入絕境,必然阻礙計(jì)算機(jī)素養(yǎng)的提高。因此,筆者結(jié)合匯編語言實(shí)例,既深入探討變量的地址尋址本質(zhì),又強(qiáng)調(diào)變量的空間屬性,使學(xué)生意識(shí)到,在計(jì)算機(jī)內(nèi)部,變量只是CPU獲得數(shù)據(jù)的一種方法,程序通過對變量的引用而實(shí)現(xiàn)數(shù)據(jù)的運(yùn)算,與數(shù)學(xué)上的變量概念有著本質(zhì)的區(qū)別。程序中的變量既封裝了地址,又封裝了操作類型。關(guān)于數(shù)據(jù)類型,在系統(tǒng)指令的講解中就已經(jīng)深入貫徹,使學(xué)生明白,數(shù)據(jù)類型的規(guī)劃實(shí)際上是數(shù)據(jù)存儲(chǔ)和CPU運(yùn)算的特點(diǎn)決定的,必須在程序設(shè)計(jì)中嚴(yán)格劃分,否則CPU將混淆指令,在數(shù)據(jù)獲取上也會(huì)出現(xiàn)錯(cuò)誤。這里要著重區(qū)分二進(jìn)制數(shù)值與ASCII碼字符的差異。根據(jù)以往的授課經(jīng)驗(yàn),多數(shù)學(xué)生不能正確認(rèn)識(shí)ASCII的作用。筆者曾在為數(shù)學(xué)專業(yè)研究生補(bǔ)習(xí)C語言知識(shí)的時(shí)候,問及ASCII中英文Interchange的交換雙方各是誰?是誰與誰的交換?竟無人知曉,學(xué)生的計(jì)算機(jī)修養(yǎng)之低下可見一斑。顯然,對數(shù)據(jù)類型概念的這種原理性解釋,對學(xué)生掌握各種高級語言有著指導(dǎo)性的意義。不過,筆者并沒有花太多時(shí)間講解匯編語言的程序設(shè)計(jì),而是通過例題和演示實(shí)驗(yàn)加強(qiáng)學(xué)生對程序概念的理解。因此,筆者在大綱中并不要求學(xué)生掌握匯編語言的程序設(shè)計(jì),只要求能讀懂一般難度的匯編程序,初步建立結(jié)構(gòu)化程序思想。這在系統(tǒng)指令中也有所體現(xiàn),過于復(fù)雜的運(yùn)算指令以及不常用的條件控制指令等完全擯棄不講。在一般教材中所介紹的指令集合,只選擇其中一個(gè)不大的子集,倘若在匯編程序中涉及到了沒有學(xué)習(xí)過的指令,就臨時(shí)介紹??傊v授過程緊緊圍繞“培養(yǎng)學(xué)生計(jì)算機(jī)素養(yǎng)”這個(gè)主題,并不要求學(xué)生會(huì)編寫復(fù)雜的匯編語言程序,不過多糾纏指令是本大綱的一個(gè)基本特點(diǎn)。
最后,是輸入、輸出接口芯片和中斷技術(shù)的運(yùn)用。接口在計(jì)算機(jī)中之所以存在的一個(gè)基本理由,就是外部設(shè)備如何實(shí)現(xiàn)對計(jì)算機(jī)主機(jī)(CPU和存儲(chǔ)器)的數(shù)據(jù)輸入和輸出。歸根結(jié)底,一切被處理的數(shù)據(jù)都來源于外設(shè),也最終歸口于外設(shè)。限于學(xué)時(shí),筆者僅講解了三個(gè)基本芯片:并行接口8255A,串行通信接口8251A,以及定時(shí)器8253。對于8255A芯片,重點(diǎn)介紹了方式0和方式1兩種工作模式;對于8251A,也只著重介紹了異步通信模式;而對于8253,只強(qiáng)調(diào)了中斷觸發(fā)脈沖的作用和典型波形的生成功能。對中斷控制器僅做簡單介紹,旨在闡明中斷的優(yōu)先級處理過程,重點(diǎn)放在理解中斷操作在計(jì)算機(jī)輸入、輸出的重要意義。具體講解的過程,完全依賴實(shí)例和演示實(shí)驗(yàn),更多地闡述各芯片寄存器的作用及CPU對芯片和寄存器的尋址方法,并對比與存儲(chǔ)器尋址的不同之處。通過介紹輸入、輸出指令完成芯片功能的初始化,讓學(xué)生理解芯片工作的“可編程性”。同時(shí),也讓學(xué)生認(rèn)識(shí)到計(jì)算機(jī)的輸入、輸出相對于算法而言是一個(gè)完全獨(dú)立的部分。另外再介紹芯片地址在操作系統(tǒng)中被名稱化,通過專有名稱尋址外設(shè)是基于操作系統(tǒng)程序編寫的一般性原則,并結(jié)合C語言的鍵盤和顯示器訪問來說明接口在高級語言體系中的運(yùn)用過程。
4實(shí)驗(yàn)問題
“微機(jī)原理”是一門實(shí)驗(yàn)性極強(qiáng)的課程,在數(shù)學(xué)專業(yè),不可能建立專有的實(shí)驗(yàn)機(jī)房,而且也不能過高估計(jì)學(xué)生的動(dòng)手能力。但學(xué)生在“大學(xué)物理”課程中已經(jīng)有了一定的實(shí)踐經(jīng)驗(yàn),多數(shù)學(xué)生在中學(xué)做過電路的實(shí)驗(yàn),可以較順利理解電平概念。由于學(xué)時(shí)的限制,筆者普遍采用了演示實(shí)驗(yàn)或利用FLASH技術(shù)將實(shí)驗(yàn)過程投影到屏幕,對學(xué)生理解數(shù)據(jù)的物理存在和CPU對數(shù)據(jù)的尋址及簡單運(yùn)算過程具有很大的幫助作用。集體實(shí)驗(yàn)的參與過程非常少,只是在匯編語言的講解過程中采用,利用宏匯編系統(tǒng)環(huán)境和Debug技術(shù)加深學(xué)生使用存儲(chǔ)器的能力,鞏固對變量的各項(xiàng)屬性的理解。
除了以演示實(shí)驗(yàn)為主之外,在學(xué)生中組織興趣小組,教師利用業(yè)余時(shí)間指導(dǎo)那些對計(jì)算機(jī)有強(qiáng)烈愛好的學(xué)生做接口實(shí)驗(yàn)。結(jié)果發(fā)現(xiàn),這部分學(xué)生迅速成為了“微機(jī)原理”課程學(xué)習(xí)的骨干力量,并帶動(dòng)了整個(gè)班級的學(xué)習(xí)積極性,個(gè)別同學(xué)表現(xiàn)出了超強(qiáng)的實(shí)驗(yàn)動(dòng)手能力,較高水平地完成了各個(gè)實(shí)驗(yàn)項(xiàng)目,董建強(qiáng)同學(xué)就是其中較為突出的一個(gè)。他在后來的畢業(yè)設(shè)計(jì)中對北京市花園橋路口的交通流量建立了合理的數(shù)學(xué)模型,結(jié)合并行接口知識(shí),成功編寫了匯編語言源程序,并取得了優(yōu)異的成績。興趣小組的另外一位同學(xué)李冬松,畢業(yè)后順利進(jìn)入了某著名電話公司的北京研究所,從事英漢電子詞典的底層編程工作,據(jù)他后來說,“微機(jī)原理”的硬件知識(shí)是他戰(zhàn)勝眾多競爭對手的法寶。由于沒有有效的課時(shí)分配,他們都是利用暑假完成了全部實(shí)驗(yàn)內(nèi)容。
5成績考核
成績考核是整個(gè)教學(xué)過程中重要的一環(huán)。雖然注重平時(shí)成績,但期末考試成績依然占了相當(dāng)大的比重??荚噧?nèi)容完全貫徹教學(xué)指導(dǎo)思想,集中考察學(xué)生對數(shù)據(jù)存在的物理概念及其CPU尋址的理解程度,強(qiáng)調(diào)變量的類型定義及引用,包括一些基礎(chǔ)算法的結(jié)構(gòu)化理念,輸入、輸出的基本過程和中斷概念。從試題類型而言,選擇題、判斷題和程序填空占了70%,簡答題和接口設(shè)計(jì)占30%。既強(qiáng)調(diào)概念理解又涉及實(shí)際應(yīng)用,但放棄了時(shí)序、硬件組織、外部設(shè)備等內(nèi)容的考核,圍繞大綱和教學(xué)內(nèi)容,注重計(jì)算機(jī)的邏輯思維,而不是細(xì)微的電平化的數(shù)據(jù)傳輸過程。物理組成為邏輯服務(wù),不陷入到物理細(xì)節(jié),而注重邏輯的物理化是筆者的基本教學(xué)思路,也是成績考核的基本方針。
參考文獻(xiàn)
[1] 錢曉捷. 匯編語言程序設(shè)計(jì)(第二版)[M]. 北京:電子工業(yè)出版社,2003.
[2] 沈美明. IBM-PC匯編語言程序設(shè)計(jì)(第2版)[M]. 北京:清華大學(xué)出版社,2001.
[3] 戴梅萼,史嘉權(quán). 微型計(jì)算機(jī)及應(yīng)用[M]. 北京:清華大學(xué)出版社,2001.