林 新
(北京航空航天大學 自動化科學與電氣工程學院,北京100191)
“微機原理”及是自動化專業本科課程體系中重要的核心基礎課,對于學生學習“計算機控制”、“嵌入式系統”等后繼課程起著承上啟下的作用。通過此課程學習,學生能夠掌握計算機的基本概念和運行機制,理解信息輸入、指令執行、數據處理、以及控制信號輸出的整個過程。目前對于教學選用的微機系統架構,國內各個高校有不同的選擇,如8051單片機,8086CPU,或者ARM系列CPU等等[1~3]。其中8086CPU雖然出現較早,但是其構成的微型計算機體系架構具有簡潔清晰、基礎概念和知識點豐富實用的特點,學生在學習8086微機系統架構的基礎上,能夠舉一反三,相對較容易理解其它單片機系統或現代CPU構成的計算機系統。因此本文以8086CPU存儲器組織及其運行機制為主線研究和討論教學方法。課程的知識點多而繁雜,應用性強,學生難以建立整體性、系統性的概念,因此教學有一定的難度。比如CPU結構及系統組織等相關章節,內容較多,涉及的各個部件、引腳以及時序邏輯之間的關系復雜,計算機內部各個部件的控制、指令的執行以及數據的處理的是相互關聯的動態過程,難以描述清楚[4]。國內高校也對此進行了教學研究和探索,比如任務驅動教學法[3],預習與課堂練習相結合的教學方法[5],以學生為中心“四法融合”式教學[6],等等。通過參考國內高校的教學研究以及以往教學經驗,在教學過程中引入了啟發式教學、互動式教學、討論式教學等多種教學方法,在教學內容著重增加了動態過程演示,以改善教學效果,提高學生學習效率。
“微機原理”課程按照內容可以分為基礎概念、CPU內部結構、計算機系統組成、指令系統及匯編編程、輸入輸出接口等部分。每一部分所涉及的知識點非常多,因此在教學過程中需要理清各個部分、各個知識點之間的邏輯關系,將各個知識點的講解按照先后順序有機地串接起來,形成統一的概念體系,而不是孤立的、沒有關聯關系的知識點。這是整個課程教學設計、改善教學方法的基礎,在此基礎上加入系統運行動態過程演示以提高學生感性認識、加入問題以便啟發學生主動思考才有意義。
在本文中主要以8086CPU存儲器組織及其運行機制為主線研究和討論教學方法和設計教學過程。涉及的基本概念和知識點主要包括微機系統尋址、邏輯段、程序存儲、數據存取、存儲器分體結構等內容。在教學過程中,首先需要學習和理解微機系統尋址方式,這是理解存儲器組織運行的基礎;其次是學習存儲器組織的概念,包括邏輯段、程序存儲、數據操作方式及存儲器分體結構等等;為了鞏固學習內容,在最后安排了存儲器匯編程序示例,通過一個簡單的匯編程序討論存儲器組織的運行機制。
存儲器進行尋址是8086系統存儲器組織的基本概念之一,所涉及的教學內容和知識概念有比較強的前后關聯性,因此在教學中強調了啟發性教學方法,在關鍵地方引導學生一步步深入思考,同時使用直觀演示法,使用動畫演示微機系統的一些動態過程。各知識點的引入順序如圖1所示。

圖1 物理地址和邏輯地址概念的引入
首先采用講授法教學,讓學生學習和了解CPU結構及其內部寄存器,然后采用啟發式教學方法,一步步引導學生學習和理解更多的知識點和概念。從CPU內部寄存器的介紹,引出段寄存器、段基址、以及偏移地址的概念,再通過啟發式問題:什么是段基址和偏移地址,引導學生了解相關的存儲器和物理地址的概念。對于存儲器主要了解其抽象模型,在PPT中使用動畫展示計算機系統中存儲器的抽象模型、以及物理地址的示意圖。
接下來引出啟發性問題:程序是否能夠直接使用物理地址。此時可以和學生進行互動和討論,促使學生對所學的知識進行歸納和推導。由于程序無法直接使用物理地址,為了解決這個問題,因此引出了段基址和偏移地址的概念,也就是邏輯地址。
由此通過基本知識介紹、關鍵地方提出思考問題,一步步引導學生建立物理地址、邏輯地址以及CPU尋址操作的概念。
存儲器組織相關的知識點較多,為了在教學過程中形成一條前后關聯的主線,在課程中以講授法為主,穿插啟發式提問、動態過程直觀演示、課堂練習等教學方法,將各個知識點連接起來。
授課順序設置如下:首先通過段基址和段寄存器引入邏輯段的概念;只有理解了邏輯段的概念,才能理解程序分段存儲的模式;理解程序分段存儲概念之后,就可以學習數據操作規則,然后再進一步結合存儲器分體結構學習數據存取操作過程。相關的知識點主要包括邏輯段、程序存儲方式、數據操作規則、存儲器分體結構等等。
1)邏輯段
這一部分內容的難點是如何將邏輯段、段基址、偏移地址等概念有機的聯系在一起。為此主要采用了直觀演示法,用動畫展示各個概念之間的相互關系。
圖2為邏輯段及其起始地址、段基址的示意圖,在授課中這些信息是按照①~④順序依次展示出來。首先給出不同邏輯段的劃分,其次展示各個邏輯段對應的起始地址,然后將各個邏輯段的起始地址單獨顯示出來,再生成相應的段基址。

圖2 邏輯段及其起始地址、段基址
邏輯段的大小也進行了標識。為了強調邏輯段的起始地址和大小之間的關系,圖中64KB大小的邏輯段的末尾地址沒有直接給出,而是在課堂上留給學生思考和討論。雖然是非常簡單的問題,但是討論式教學方法的引入,改變了講授法教學的節奏,轉移了學生的注意力,活躍了課堂氣氛,對于改善教學效果很有幫助。
2)程序在內存中存儲
在課程學習過程中,學生面臨一個比較實際的問題是程序如何在內存中存儲。由于涉及操作系統對程序的調入和處理過程,具體實現較為復雜,因此課程中以高度抽象和簡化的方式進行講解。這里主要采用直觀演示教學法將抽象的概念形象化地動態展示出來。如圖3所示,PPT從左到右依次呈現8086程序劃分的過程:先將程序分為數據和可執行的代碼兩部分,再將數據分為堆棧數據和普通數據,最后存儲到存儲器中,所占用的邏輯段依次動態顯示和命名為代碼段、數據段、堆棧段,另外部分程序可能會有附加段。圖中標號①~⑦為顯示的順序。

圖3 程序在內存中存儲的存儲模型
至此,學生已經了解程序由邏輯段組成。為了進行更深入理解邏輯段的概念,解答程序如何存儲的問題,采用啟發式教學法進一步引入以下相關提問:
邏輯段大小是由誰來決定?
邏輯段在內存中的位置由誰來決定?
程序的各邏輯段段基址如何賦值給段寄存器?
這些知識點對于理解微機系統運行機制、建立微機系統整體體系概念非常重要,但是學生在學習初期很難考慮到,因此需要教師通過啟發式問題主動提出,引導學生思考并進行講解。在教學實踐中,學生由于缺乏編程經驗和操作系統工作原理等相關知識,無法正確回答,但是會引起進一步探究結果的強烈興趣,因此在反復提問并吸引學生的注意力之后,教師即可給出答案,從而使得學生留下深刻記憶,加強了學習效果。
3)數據操作規則
8086系統數據操作規則的重點是字數據的操作,所涉及的概念具有很強的前后相關性,因此在教學過程中使用直觀演示法,采用動畫方式將這些概念的學習動態串接起來。
如圖4所示,在PPT中按照標注的順序依次進行顯示和講解。首先顯示字數據的高字節、低字節(圖4①、②),其次顯示高低字節在存儲器中存儲的順序(圖4③、④),接著顯示如何確定字數據的地址(圖4⑤),然后顯示另外一個字數據的存儲(圖4⑥、⑦)。此處為了調動學生思考和調節課堂氣氛,加入了討論式教學法,和學生一起討論此數據的地址是多少(圖4⑧),然后給出答案(圖4⑨),最后說明這兩個數據存儲有什么不同(圖4⑩)。

圖4 字數據操作
直觀演示法的引入,使得學生對字數據操作規則的認知一目了然。而加入的問題討論,可以讓學生回顧所學的相關性概念知識是否存在盲點,并在思考與討論中加深對知識的理解。
4)存儲器分體結構
存儲器分體結構概念的難點有兩點:一是CPU控制信號、地址輸出與奇偶存儲體及存儲單元選擇之間的邏輯關系,二是不規則字的讀寫操作過程。之所以是難點主要在于CPU的各種操作是一個動態過程,反映了微機系統運行過程中的時序邏輯,而靜態的圖片和講解比較抽象,對學生的理解能力是一個挑戰。為了提高學生學習效率,在教學過程中也需要采用直觀演示法,將此動態過程以形象化的方式展示出來,給學生以直觀的認識。
針對難點一,動態過程按照順序主要演示如下內容:CPU給出地址信號、控制信號的傳遞過程;其次控制信號使能或禁止奇偶存儲體的過程;然后是地址信號選擇存儲單元的過程;最后演示數據如何傳輸給CPU。
針對難點二,主要是通過不規則字示例演示讀或寫的動態過程,是難點一所演示過程的一種復雜組合。
以往教學使用靜態圖片和語言描述講解需要耗費大量時間,個別學生還需要在課下反復學習和思考。通過動態過程演示,學生能夠很快理解存儲器操作的動態過程。
為了鞏固學生所學習的段寄存器、邏輯地址到物理地址的變換、存儲器使用以及CPU執行程序過程等知識,提高知識的綜合運用能力,在這一章節課程設計的最后引入了練習法教學,安排了匯編程序進行課堂練習。
如圖5所示,課堂練習所使用的示例程序有五條指令。學生可以通過練習鞏固以下概念:CPU取指令過程,包括CS段寄存器與IP寄存器配合生成指令的物理地址、IP寄存器自動修改內容、CPU輸出地址信號和控制信號;加法指令對標志寄存器的影響;相加結果保存到存儲器的操作過程,包括段寄存器和指針寄存器的默認搭配關系、存儲地址生成、控制信號的生成與控制作用等等。

圖5 課堂練習程序
通過在“微機原理”課程內容設計和教學過程中靈活采用多種教學方法,使得相關的各個知識點以連貫性更強、更直觀的方式展示出來,學生更加容易理解和接受,提高了學習效率。啟發性、互動性、以及課堂練習等內容的安排,在促進學生主動思考、提高課堂注意力等方面有著顯著的作用。通過對過去幾年“微機原理”課程期末成績的統計,采用新的教學方法后學生的優良率得到明顯提升,教學效果得到了改善。