摘要:本文結(jié)合教學(xué)實(shí)踐介紹了一個(gè)基于32位結(jié)構(gòu)“微機(jī)原理”課程的教學(xué)方案,選擇IA-32處理器、32位匯編語言作為課程的主體教學(xué)內(nèi)容,也說明了進(jìn)行接口硬件實(shí)驗(yàn)的實(shí)驗(yàn)系統(tǒng)特點(diǎn),以及基于32位教學(xué)內(nèi)容的取舍原則。
關(guān)鍵詞:微機(jī)原理;教學(xué)方案;32位
中圖分類號:G642文獻(xiàn)標(biāo)識碼:B
“微機(jī)原理”是我國高等院校電子、自控、機(jī)電、計(jì)算機(jī)等電類專業(yè)的基礎(chǔ)課。該課程包括本科、??茖哟?有多種名稱,但主體內(nèi)容則是微型計(jì)算機(jī)基本工作原理、匯編語言及接口技術(shù)三大部分,并配置匯編語言軟件上機(jī)和接口技術(shù)硬件實(shí)驗(yàn)的實(shí)踐環(huán)節(jié)。從上世紀(jì)80年代開始,我國高等院校陸續(xù)以16位結(jié)構(gòu)實(shí)施“微機(jī)原理”教學(xué),主體內(nèi)容是16位8086/8088處理器、DOS平臺的16位匯編語言和16位IBM PC系列機(jī)接口技術(shù)。
隨著微型計(jì)算機(jī)技術(shù)的飛速發(fā)展,越來越多的“微機(jī)原理”課程融入了32位教學(xué)內(nèi)容,甚至直接以32位結(jié)構(gòu)為主體。但是,如何基于32位結(jié)構(gòu)、展開這三部分教學(xué)內(nèi)容,以及如何將這三部分內(nèi)容銜接貫穿整個(gè)課程卻是一個(gè)需要解決好的問題。本文結(jié)合作者主編的教材和具體的教學(xué)實(shí)踐,給出一個(gè)可行的教學(xué)方案。
1基于IA-32處理器
“微機(jī)原理”課程是圍繞典型處理器(即中央處理單元CPU、微處理器)為核心展開其教學(xué)內(nèi)容的。基于32位結(jié)構(gòu)的“微機(jī)原理”課程中,選擇什么處理器也就至關(guān)重要。通用微型計(jì)算機(jī)上使用過80386、80486、奔騰(Pentium)系列處理器,現(xiàn)在是酷睿(Core)系列處理器,似乎哪一種都不完全適合課程要求。事實(shí)上,我們沒有必要考慮具體采用哪一種處理器,英特爾公司已經(jīng)給出了名稱,即英特爾32位結(jié)構(gòu)(32-bit Intel Architecture)的處理器,簡稱IA-32處理器。
IA-32處理器是32位80x86結(jié)構(gòu)處理器的總稱。在側(cè)重基本工作原理的“微機(jī)原理”課程中,我們應(yīng)該更多地講授32位結(jié)構(gòu)處理器的共性內(nèi)容,而不是某個(gè)具體處理器的個(gè)性特征。所以,基于32位結(jié)構(gòu)的微機(jī)原理教學(xué)方案中,“IA-32處理器”是一個(gè)很自然的選擇,也揭示了我們課程的重點(diǎn):是共性的原理,不是技術(shù)細(xì)節(jié)。
教學(xué)內(nèi)容中,我們可以介紹各代IA-32處理器,以便讓學(xué)生了解處理器技術(shù)發(fā)展情況,也完全有必要給學(xué)生引出最新進(jìn)展。但是,處理器的寄存器結(jié)構(gòu)、存儲器組織、引腳信號等都是基于IA-32處理器共性內(nèi)容。尤其是處理器引腳信號,各代各款I(lǐng)A-32處理器都不相同,所以我們重點(diǎn)講授數(shù)據(jù)總線、地址總線和基本讀寫控制總線的作用,給出有代表性的處理器(例如8086、Pentium)引腳,沒有必要詳細(xì)展開某個(gè)處理器所有的引腳信號。
2基于32位匯編語言
確立了32位結(jié)構(gòu)的處理器,也就確立了32位的指令系統(tǒng)。在“匯編語言”部分的教學(xué)中,我們可以自然地講解IA-32處理器的32位通用寄存器、常用32位指令及編程。然而,我們面臨了一個(gè)操作系統(tǒng)平臺的選擇問題。
通用微型計(jì)算機(jī)主要采用32位Windows操作系統(tǒng),但匯編程序(例如MASM等)卻不能很好地支持Windows應(yīng)用程序開發(fā)。另一方面,匯編程序沒有標(biāo)準(zhǔn)函數(shù)(子程序)等資源,必須調(diào)用操作系統(tǒng)功能才能實(shí)現(xiàn)鍵盤輸入和顯示器輸出。而Windows系統(tǒng)功能的調(diào)用是按照C/C++高級語言語法定義的,匯編語言很難調(diào)用,尤其對初學(xué)者來說是不可能掌握的。
好在Windows操作系統(tǒng)利用IA-32處理器的虛擬8086方式提供了模擬MS-DOS的環(huán)境(即COMMAND.COM程序),使得我們的實(shí)踐環(huán)節(jié)可以仍然基于DOS平臺、采用簡單的DOS功能調(diào)用。雖然這只是一個(gè)16位平臺,但是卻可以實(shí)踐32位通用指令編程,也可以與后續(xù)接口技術(shù)部分內(nèi)容相互銜接。所以這種折中方式是一種可行的教學(xué)方案,尤其對于水平較低的普通本科、或者??茖哟蔚膶W(xué)生來說是較好的選擇。在作者主編的清華版《微型計(jì)算機(jī)原理及應(yīng)用》教材、以及我們的成人教育學(xué)生就采用這個(gè)教學(xué)方案。
當(dāng)然,能夠在IA-32處理器保護(hù)方式實(shí)踐32位匯編語言就更加理想。目前,我們可以采用32位Windows控制臺(即CMD.EXE程序),它的使用與MS-DOS一樣,但卻是一個(gè)真正的32位操作系統(tǒng)平臺。為了避免一開始就讓學(xué)生熟悉難于掌握的Windows系統(tǒng)函數(shù)調(diào)用,我們可以事先編寫一個(gè)實(shí)現(xiàn)基本鍵盤輸入和顯示器輸出的子程序庫。國內(nèi)外不少32位匯編語言教材都采用了這個(gè)思路。更進(jìn)一步,我們可以利用子程序庫打造一個(gè)平臺無關(guān)的、統(tǒng)一的、簡單的調(diào)用方法,讓學(xué)生避開繁瑣的功能調(diào)用而輕松入門。這樣也同時(shí)解決了接口技術(shù)部分又需要學(xué)習(xí)DOS系統(tǒng)調(diào)用的問題。在作者主編的機(jī)工版《微機(jī)原理與接口技術(shù)——基于IA-32處理器和32位匯編語言》教材、以及我們的統(tǒng)招本科學(xué)生就采用這個(gè)教學(xué)方案。
鑒于目前國內(nèi)外匯編語言的教學(xué)現(xiàn)狀,我們認(rèn)為有必要建立一套系統(tǒng)I/O的統(tǒng)一調(diào)用規(guī)則,它的作用相當(dāng)于高級語言的標(biāo)準(zhǔn)函數(shù)。這也是我們提出并實(shí)踐著的“匯編語言多元化教學(xué)方案”中一個(gè)關(guān)鍵思路。
3基于32位PC機(jī)的接口實(shí)驗(yàn)
盡管微型計(jì)算機(jī)的軟硬件平臺都進(jìn)入了32位環(huán)境,但是微機(jī)接口技術(shù)部分的教學(xué)內(nèi)容并沒有改變。一方面,這是因?yàn)榛镜慕涌诩夹g(shù)并沒有改變。并行接口、定時(shí)接口、模擬接口等內(nèi)容仍然基于傳統(tǒng)的8位結(jié)構(gòu),在16位結(jié)構(gòu)的“微機(jī)原理”課程中也是如此。另一方面,32位Windows操作系統(tǒng)限制應(yīng)用程序進(jìn)行直接的外設(shè)I/O操作,也使得這部分教學(xué)內(nèi)容難有改變。
那么,在32位微機(jī)軟硬件平臺如何實(shí)踐微機(jī)接口的硬件實(shí)驗(yàn)?zāi)?目前,這個(gè)問題也有了比較滿意的教學(xué)方案,例如清華大學(xué)的TPC通用微機(jī)接口實(shí)驗(yàn)系統(tǒng)、西安唐都的TD-PIT實(shí)驗(yàn)及開發(fā)系統(tǒng)等。我們學(xué)院的“微機(jī)原理及接口技術(shù)”課程配置清華大學(xué)的TPC-USB通用微機(jī)接口實(shí)驗(yàn)系統(tǒng)。該系統(tǒng)可以進(jìn)行存儲器讀寫、中斷、8255、8253、ADC和DAC等驗(yàn)證性實(shí)驗(yàn)和綜合實(shí)驗(yàn),也支持開展課程設(shè)計(jì)。TPC-USB系統(tǒng)的硬件主體是一個(gè)實(shí)驗(yàn)臺,它以USB接口形式連接主機(jī)。該系統(tǒng)同時(shí)提供一個(gè)基于Windows操作系統(tǒng)的集成開發(fā)軟件,并模擬一個(gè)MS-DOS環(huán)境(不是Windows本身的DOS環(huán)境)進(jìn)行硬件接口實(shí)驗(yàn)。我們開發(fā)的I/O子程序也可以在該系統(tǒng)中使用,很好地解決了32位Windows控制臺和16位MS-DOS環(huán)境匯編語言的一致性問題。
4基于32位結(jié)構(gòu)的教學(xué)內(nèi)容取舍
基于32位結(jié)構(gòu)的“微機(jī)原理”課程要在原16位結(jié)構(gòu)教學(xué)內(nèi)容的基礎(chǔ)上進(jìn)行適當(dāng)取舍,刪除過時(shí)的陳舊技術(shù),保留核心的基本原理,增添最新的先進(jìn)知識。
不管是早期基于8位Z80和TPC801單板機(jī),或現(xiàn)在基于16位8086和IBM PC系列機(jī),還是基于32位IA-32處理器和32位PC機(jī),“微機(jī)原理”課程的教學(xué)目標(biāo)沒有根本改變,其反映基本工作原理的核心內(nèi)容也應(yīng)該繼承。例如,微型計(jì)算機(jī)組成、尋址方式、常用指令、匯編語言程序設(shè)計(jì)、處理器引腳和時(shí)序、總線技術(shù)、存儲器芯片、外設(shè)數(shù)據(jù)傳送方式、常用接口芯片等都是必不可少的知識單元。雖然在具體的平臺結(jié)構(gòu)上,細(xì)節(jié)的教學(xué)內(nèi)容會有所不同。
基于32位結(jié)構(gòu)的“微機(jī)原理”課程,在教學(xué)內(nèi)容的編排上應(yīng)該直接以32位教學(xué)內(nèi)容為起點(diǎn),不宜將32位內(nèi)容作為16位內(nèi)容的補(bǔ)充,安排在各章最后或課程最后。硬件上,要以IA-32處理器和32位PC機(jī)為主體介紹微型機(jī)工作原理;軟件上,要以32位指令系統(tǒng)展開匯編語言編程。這樣,教學(xué)內(nèi)容可以很自然地摒棄陳舊的8位和16位技術(shù),也便于引出最新的32位、甚至64位技術(shù)。例如,匯編語言的32位Windows編程、與Visual C++的混合編程,高速緩沖存儲器和存儲管理,精簡指令集計(jì)算機(jī)思想、浮點(diǎn)處理和多媒體指令,以及指令流水線、多線程、多核等技術(shù)。
在強(qiáng)調(diào)基本工作原理的基礎(chǔ)上,需要在教學(xué)過程中淡化不必要的技術(shù)細(xì)節(jié)。例如,重點(diǎn)講解存儲器地址譯碼原理,不展開存儲器芯片的連接細(xì)節(jié)。再如,抓住基本讀寫控制信號和基本讀寫總線周期,不詳細(xì)介紹所有引腳功能和時(shí)序。特別需要關(guān)注的是匯編語言編程,指令繁多、規(guī)則凌亂是這部分內(nèi)容的突出問題。我們只選擇所有指令系統(tǒng)都具有的、核心的處理器指令,只引出所有匯編程序都支持的、基本的偽指令。我們通過程序片段(或?qū)Ρ雀呒壵Z言)掌握常用數(shù)據(jù)處理指令,結(jié)合簡單的程序框架、并通過程序結(jié)構(gòu)學(xué)習(xí)控制轉(zhuǎn)移指令和編程方法。這樣,重點(diǎn)突出、課時(shí)減少,還能夠滿足實(shí)踐環(huán)節(jié)的應(yīng)用需求。
總之,基于32位結(jié)構(gòu)進(jìn)行“微機(jī)原理”課程的教學(xué)改革是必然的趨勢。教學(xué)改革過程中也必然會遇到各種各樣的問題。本文作者結(jié)合教學(xué)實(shí)踐介紹了一個(gè)可行的教學(xué)方案,歡迎大家閱讀我們的教材、也可以訪問我們的教學(xué)網(wǎng)站(http://www2.zzu.edu.cn/qwfw),批評指正、探討交流。
參考文獻(xiàn):
[1] 錢曉捷. 微機(jī)原理與接口技術(shù)——基于IA-32處理器和32位匯編語言[M].4版. 北京:機(jī)械工業(yè)出版社,2008.
[2] 錢曉捷. 微型計(jì)算機(jī)原理及應(yīng)用[M]. 北京:清華大學(xué)出版社,2006.
[3] 穆玲玲,錢曉捷. 32位匯編語言程序設(shè)計(jì)[M]. 北京:電子工業(yè)出版社,2007.
[4] Kip R. Irvine. Intel匯編語言程序設(shè)計(jì)[M]. 4版. 溫玉杰,等譯.北京:電子工業(yè)出版社,2004.
[5] 錢曉捷. 匯編語言多元化教學(xué)方案初探[C]// 河南省計(jì)算機(jī)學(xué)會.計(jì)算機(jī)研究新進(jìn)展(河南省計(jì)算機(jī)學(xué)會2008年學(xué)術(shù)年會論文集). 北京:電子工業(yè)出版社, 2008: 282-285.
[6] 唐祎玲,毛月東. 32位微機(jī)原理與接口技術(shù)實(shí)驗(yàn)教程[M]. 西安:西安電子科技大學(xué)出版社,2003.
[7] 馬旭東. 32位環(huán)境下微機(jī)原理與接口實(shí)驗(yàn)教學(xué)改革探討[J]. 電氣電子教學(xué)學(xué)報(bào),2006,28(4):5-9.
[8] 錢曉捷. 重新認(rèn)識匯編語言[J]. 中國大學(xué)教學(xué),2004(7):47-49.