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