彭 曠
(湖北大學(xué) 物理與電子科學(xué)學(xué)院,湖北 武漢 430062)
“微機原理與應(yīng)用”作為電子科學(xué)與技術(shù)、微電子科學(xué)與技術(shù)、光電信息科學(xué)與工程等電子類專業(yè)的專業(yè)核心課程,在掌握“電路理論”、“數(shù)字信號處理”、“模擬信號處理”等課程的基礎(chǔ)上,可以讓學(xué)生通過掌握中央處理器(central processing unit,簡稱CPU)的構(gòu)成原理,在熟悉各個基本電路模塊的基礎(chǔ)上,了解匯編程序如何在各模塊之間流通,進而掌握軟件是如何在硬件電路的基礎(chǔ)上運行的;在了解CPU組成原理基礎(chǔ)上,通過對Intel 8086/8088匯編指令集的學(xué)習(xí),讓學(xué)生掌握匯編程序的語法和基礎(chǔ)的匯編語言編程;最后通過CPU和外部電路的集成,幫助學(xué)生建立系統(tǒng)工程設(shè)計概念,為后續(xù)“單片機原理與應(yīng)用”、“嵌入式系統(tǒng)原理與應(yīng)用”等課程的學(xué)習(xí)奠定基礎(chǔ)。因此,“微機原理與應(yīng)用”作為承上啟下的課程,在專業(yè)教育培養(yǎng)體系中占有非常重要的地位[1-9]。
在課堂上講授課程內(nèi)容之前,需要幫助學(xué)生對整個電子信息類課程的框架進行梳理,重點讓學(xué)生了解各門課程之間的鏈接和遞進關(guān)系,如通過對“數(shù)字信號處理”和“模擬信號處理”的學(xué)習(xí),可以構(gòu)建 CPU中的基本寄存器模塊,對 C語言的學(xué)習(xí),可以讓學(xué)生對高級語言有了解,為“微機原理與應(yīng)用”中匯編語言的學(xué)習(xí)奠定基礎(chǔ);同時,還應(yīng)該對學(xué)生講解該課程對后續(xù)課程學(xué)習(xí)、讀研甚至工作從事相關(guān)專業(yè)方向的作用,如該門課程是第一次涉及到軟硬件系統(tǒng)結(jié)合,該課程中的寄存器、總線等知識是后續(xù)進行嵌入式、微電子設(shè)計領(lǐng)域的基礎(chǔ),務(wù)必讓學(xué)生在完全理解該門課程重要性的基礎(chǔ)上,再開始對該課程進行內(nèi)容方面的講解,才能讓學(xué)生有動力和興趣進行學(xué)習(xí),讓教學(xué)效果事半功倍。
“微機原理與應(yīng)用”從內(nèi)容體系上大體可以分為微型計算機硬件結(jié)構(gòu)和工作原理、匯編指令系統(tǒng)和程序設(shè)計以及 I/0和可編程接口芯片三個模塊,由于不同的模塊知識特點并不相同,而且知識點較為零碎,對于不同模塊的知識應(yīng)有針對性地進行教學(xué)調(diào)整。
此部分內(nèi)容在“電路理論”、“數(shù)字信號處理”、“模擬信號處理”知識的基礎(chǔ)上,介紹微型計算機的基本組成電路,引入寄存器、三態(tài)輸出電路、總線結(jié)構(gòu)和譯碼器等部件?;隈T諾依曼結(jié)構(gòu),通過這些部件構(gòu)成控制器、存儲器、運算器、輸入和輸出設(shè)備等CPU基本單元。這些單元采用控制總線、地址總線和數(shù)字總線聯(lián)通,在CLK時序的作用下,對不同指令通過譯碼電路進行譯碼,有序地進行運轉(zhuǎn)。這部分需要解決以下問題:如一條特定的匯編指令如何對應(yīng)二進制數(shù)值;二進制數(shù)值匯編指令如何存儲在PROM中;在6個固定周期的每個節(jié)拍匯編指令如何在各個模塊間流通;各個模塊的內(nèi)部結(jié)構(gòu)以及其在匯編指令運行時的作用是什么;匯編指令的指令字段和地址字段的設(shè)置和作用。該部分的重難點是務(wù)必要讓學(xué)生對匯編指令的執(zhí)行在硬件中的具體流程有一個整體的概念,而不是對每個知識點都是孤立的、分散的、不成系統(tǒng)的。
在基于比較簡單的原型機講授了CPU的基本組成和工作原理后,該部分課程內(nèi)容還對邏輯地址和物理地址的轉(zhuǎn)換、16位微處理器Intel 8086/8088的框架結(jié)構(gòu)等進行講解,以便后續(xù)對基于Intel 8086/8088匯編指令集進行匯編程序的教學(xué)。這部分的重點是讓學(xué)生在掌握邏輯地址和物理地址轉(zhuǎn)換規(guī)律的基礎(chǔ)上,從Intel 8086/8088硬件的基礎(chǔ)上,從CPU芯片設(shè)計的角度出發(fā),理解邏輯地址的必要性,以便后續(xù)學(xué)生在匯編的學(xué)習(xí)中對多種尋址方式進行理解。
微型計算機硬件結(jié)構(gòu)和工作原理這部分的內(nèi)容,是教授“微機原理與應(yīng)用”課程的重中之重,可以使學(xué)生了解各硬件單元的工作原理和 CPU的運轉(zhuǎn)機制,對本課程后續(xù)內(nèi)容和后續(xù)“單片機原理與應(yīng)用”、“嵌入式系統(tǒng)原理與應(yīng)用”等課程的學(xué)習(xí)具有十分重要的意義,因此教授過程中一定要循序漸進,力求學(xué)生理解,不可貪多求快。由于該部分內(nèi)容知識點多,較為枯燥,因此在教學(xué)的過程中可以采取思維導(dǎo)圖的方式對知識點進行梳理,力求對一條匯編指令的執(zhí)行過程有一個整體的概念,掌握各模塊的結(jié)構(gòu)和在執(zhí)行程序時發(fā)揮的作用,對重難點內(nèi)容應(yīng)該多打比方、舉例子,并將有些知識引入到生活中可以接觸到的電子產(chǎn)品上或者學(xué)生非常感興趣的游戲中,還可以與相關(guān)企業(yè)進行合作教學(xué),如新思科技的大學(xué)計劃,將他們在設(shè)計芯片時用到的與本課程相關(guān)的技術(shù)聯(lián)系起來,讓教學(xué)更為生動、立體,提升學(xué)生興趣。該理論部分課時數(shù)分配約為20課時。
匯編語言作為能被計算機硬件直接識別和執(zhí)行的語言,具有占用空間少、運行速度快等特點。由于匯編語言有較大的硬件相關(guān)性,對匯編語言的學(xué)習(xí),可以較好地幫助學(xué)生深入理解和鞏固前一部分學(xué)習(xí)過的微型計算機硬件結(jié)構(gòu)等硬件相關(guān)知識,如對不同尋址方式的理解,就需要前一部分內(nèi)容作基礎(chǔ)。但相較于C語言等高級語言,匯編語言在編程和理解時要相對困難、復(fù)雜一些,因此在教學(xué)過程中,在讓學(xué)生了解匯編指令用法的基礎(chǔ)上,需要讓學(xué)生了解很多匯編代碼設(shè)計的作用、意義和區(qū)別,如數(shù)據(jù)傳輸類指令、加減運算指令、邏輯運算指令等,同時將其與硬件的相關(guān)模塊結(jié)合起來進行講解,如加法指令 ADD和帶進位的加法指令A(yù)DC的區(qū)別在于ADC不僅需要將兩個操作數(shù)進行相加,還要加上狀態(tài)寄存器中進位狀態(tài)標志位CF的值,這樣CPU就可以處理大數(shù)據(jù)間由于要進行分段進行計算的問題,讓加法運算具有普適性。
在學(xué)生掌握匯編程序的編程后,還需要對偽指令和系統(tǒng)調(diào)用等知識進行學(xué)習(xí),其中偽指令作為匯編程序的附加信息,在編譯過程中具有非常重要的作用,而分段則是將堆棧、數(shù)據(jù)和指令等部分進行劃分,以便在存儲器硬件上對不同部分的內(nèi)容進行分隔存儲,只有在正確使用偽指令的基礎(chǔ)上,匯編程序才能正常地運行起來,該內(nèi)容一定要讓學(xué)生理解,切勿死記硬背。
由于匯編語言是由機器語言(二進制語言)構(gòu)成,而C語言通過編譯器編譯后也會生成匯編語言,在講授匯編語言的過程中,可以將機器語言、匯編語言、C語言、C++語言、JAVA語言以及Python語言這條軟件主線進行梳理,讓學(xué)生對軟件的發(fā)展有一個較好的認知,明白匯編語言的特點。同時,在編程語言的教學(xué)過程中,可以將匯編語句和C語言聯(lián)系起來進行教學(xué),如匯編中的LOOP指令和C語言中循環(huán)語句的關(guān)系,這樣可以讓學(xué)生加深對匯編和C語言的理解,同時從熟悉的C語言到陌生的匯編語言之間在思維上有很好的過度,將不同科目所學(xué)的知識連貫起來,構(gòu)成一個整體。
在“微機原理與應(yīng)用”課程的實驗教學(xué)階段,采用 MASM 匯編軟件進行編程,通過對簡單程序、分支程序、循環(huán)程序和調(diào)用子程序的講解和練習(xí),讓學(xué)生在編程的過程中進一步熟悉匯編語言的語法結(jié)構(gòu)和編程思路,鞏固理論課知識內(nèi)容,具備閱讀和理解匯編語言程序的能力,并可以編寫具有一定復(fù)雜度的匯編程序。該理論和實驗部分課時數(shù)分配約為28課時,重點在于實驗部分的操練和講解。
在一個系統(tǒng)中,CPU主要負責(zé)運算和控制功能,但只有CPU肯定是不夠的,還需要外圍的存儲器、傳感器等期間相配合,才能完成一個較為實用的功能。學(xué)生在學(xué)習(xí)微型計算機硬件結(jié)構(gòu)和工作原理、匯編指令系統(tǒng)和程序設(shè)計之后,對CPU內(nèi)部的結(jié)構(gòu)和控制已經(jīng)有了一定的了解,在此基礎(chǔ)上通過 I/O和可編程接口芯片的學(xué)習(xí),即可實現(xiàn)CPU對外設(shè)的控制,進而可以搭建一些使用的系統(tǒng)。在講授該部分內(nèi)容的過程中,讓學(xué)生在理解硬件結(jié)構(gòu)和功能的基礎(chǔ)上,掌握軟硬件設(shè)計思路和設(shè)計方法,同時對中斷和總線控制方式、對外設(shè)地址的尋址等內(nèi)容要作為重難點進行講解,力求學(xué)生完全理解和掌握,為后續(xù)“單片機原理與應(yīng)用”、“嵌入式系統(tǒng)原理與應(yīng)用”的課程學(xué)習(xí)打下基礎(chǔ)。
由于該部分知識內(nèi)容較難理解,僅僅只有理論教學(xué)是遠遠不夠的,要基于MASM和Proteus仿真軟件進行實驗[10-13],在對匯編程序設(shè)計部分進行大量的實驗訓(xùn)練后,學(xué)生對I/0和可編程接口芯片相關(guān)匯編語句的學(xué)習(xí),基本都可較好地掌握,但是該部分的難點在于學(xué)生需要在自主搭建硬件系統(tǒng)的基礎(chǔ)上,編寫出符合硬件設(shè)計邏輯的匯編程序。在涉及到地址讀寫的軟硬件綜合案例中,在分析完軟件程序和硬件結(jié)構(gòu)的基礎(chǔ)上,可以將IN和OUT匯編代碼在CPU中進行譯碼、在每個節(jié)拍的不同動作結(jié)合 Proteus中不同端口的電平狀態(tài)進行綜合講解,力求幫助學(xué)生將“微機原理與應(yīng)用”課程中的三塊內(nèi)容融會貫通,并在此過程中培養(yǎng)學(xué)生軟硬件系統(tǒng)綜合設(shè)計能力,在過去4年的教學(xué)實踐中,學(xué)生是可以通過最后的綜合I/O設(shè)計實驗,將該課程所有內(nèi)容完全理解和掌握的。該理論和實驗部分課時數(shù)分配約為24課時。
通過對“微機原理與應(yīng)用”內(nèi)容在微型計算機硬件結(jié)構(gòu)和工作原理、匯編指令系統(tǒng)和程序設(shè)計、I/0和可編程接口芯片三個方面的內(nèi)容體系改革,梳理了課程內(nèi)容主線,并對各部分知識內(nèi)容的特點進行了分析,歸納出適應(yīng)內(nèi)容的教學(xué)方法,提升學(xué)生學(xué)習(xí)興趣,提高學(xué)生的學(xué)習(xí)成績,拓展學(xué)生的知識面,培養(yǎng)學(xué)生的創(chuàng)新設(shè)計能力,為后續(xù)專業(yè)課程的學(xué)習(xí)、電子設(shè)計競賽、畢業(yè)設(shè)計和走向工作崗位打下堅實的基礎(chǔ)。
在課程的考核方面,理論課部分進行閉卷考核,試卷題型主要有:選擇題、填空題、問答題、程序閱讀和填空題、編程題、接口類綜合設(shè)計題;實驗課部分進行編程和設(shè)計考核,根據(jù)學(xué)生的完成程度和熟練情況綜合進行評分。根據(jù)電子科學(xué)與技術(shù)、微電子科學(xué)與技術(shù)、光電信息科學(xué)與工程專業(yè)學(xué)生在 2017-2020年的教學(xué)評教和反饋情況,學(xué)生對該課程的滿意度和學(xué)生評教皆為優(yōu)秀,認為通過該課程的學(xué)習(xí)收益較大,本課程的教學(xué)實踐獲得了理想效果。