摘要:“匯編語言程序設(shè)計”是計算機及相關(guān)專業(yè)的專業(yè)基礎(chǔ)必修課。分析了目前課程教學(xué)中存在的問題,根據(jù)課程的目的和任務(wù),結(jié)合教學(xué)實踐,從教學(xué)進程、教學(xué)內(nèi)容、教學(xué)方法與實踐教學(xué)改革等方面探討了“匯編語言程序設(shè)計”課程教學(xué)改革的基本思路與策略。
關(guān)鍵詞:匯編語言;教學(xué)改革;實踐
作者簡介:陳燕俐(1969-),女,江蘇常熟人,南京郵電大學(xué)計算機學(xué)院,副教授;許建(1980-),男,江蘇徐州人,南京郵電大學(xué)計算機學(xué)院,講師。(江蘇南京210003)
基金項目:本文系2011年南京郵電大學(xué)教改項目“以人為本,因材施教,構(gòu)建多層次立體化教學(xué)模式的研究”(項目編號:JG00411JX13)的研究成果。
中圖分類號:G642.0#8195;#8195;#8195;#8195;#8195;文獻標(biāo)識碼:A#8195;#8195;#8195;#8195;#8195;文章編號:1007-0079(2012)11-0055-02
“匯編語言程序設(shè)計”是計算機及相關(guān)專業(yè)的專業(yè)基礎(chǔ)必修課。[1]學(xué)生通過該課程的學(xué)習(xí),不僅可掌握匯編語言程序設(shè)計的基本理論和方法,培養(yǎng)匯編語言程序開發(fā)能力,而且還會對計算機系統(tǒng)有更深刻地認識。學(xué)生學(xué)好該課程對于了解計算機系統(tǒng)的組成結(jié)構(gòu)與原理,更深入地學(xué)習(xí)程序設(shè)計方法很有意義,[2]也為將來學(xué)習(xí)操作系統(tǒng)、微機原理及接口技術(shù)、計算機組成原理、計算機系統(tǒng)結(jié)構(gòu)和高級語言等課程打好堅實的基礎(chǔ)。
“匯編語言程序設(shè)計”是一門軟硬件結(jié)合的課程,和處理器及操作系統(tǒng)都是緊密相關(guān)的。近年來,由于教學(xué)內(nèi)容滯后于當(dāng)前計算機技術(shù)的發(fā)展,并且這門課程的內(nèi)容較抽象、不易理解,容易導(dǎo)致學(xué)生的學(xué)習(xí)興趣下降,因此“匯編語言程序設(shè)計”逐漸在計算機專業(yè)教學(xué)體系中被忽視,課程改革成為各高校計算機等專業(yè)緊迫的問題之一。本文根據(jù)匯編語言的特點,結(jié)合課程組老師的多年的研究和探索,探討了從教學(xué)進程、教學(xué)內(nèi)容、教學(xué)手段以及實踐教學(xué)等多個方面對該課程進行改革的基本思路和策略。
一、教學(xué)進程的改革
目前大部分學(xué)校都是在大二或大三開設(shè)“匯編語言程序設(shè)計”課程。筆者認為應(yīng)將該課程安排在第一學(xué)期,在學(xué)生學(xué)習(xí)了課程“計算機科學(xué)與技術(shù)導(dǎo)論”之后。原因主要有以下兩點:
1.匯編語言是計算機學(xué)習(xí)最佳起點的編程語言,是人和計算機溝通的最直接的方式
匯編語言是最接近于機器語言的編程語言。如果說機器語言是計算機操作的本質(zhì),那么匯編語言就是最接近本質(zhì)的語言。匯編語言描述了機器最終所要執(zhí)行的指令序列??梢哉f匯編語言是聯(lián)系硬件與軟件的紐帶,學(xué)習(xí)它既可以理解軟件,又能夠感知硬件,所以學(xué)習(xí)匯編語言無疑是學(xué)生學(xué)習(xí)和理解計算機體系最佳的切入點。通過該門課程的學(xué)習(xí),學(xué)生能夠深刻理解機器運行程序的機理,使得他們在以后接觸復(fù)雜變化的計算機知識時變得清晰和順暢。
2.匯編語言是很多相關(guān)課程,如高級語言、數(shù)據(jù)結(jié)構(gòu)、操作系統(tǒng)、微機原理等的重要基礎(chǔ)
目前在大學(xué)計算機課程體系中,“高級語言程序設(shè)計”通常被安排在第一學(xué)期。大一新生主要是通過C語言的學(xué)習(xí)達到利用計算機分析問題和解決問題的目的。C語言被認為是學(xué)習(xí)其他計算機課程的基礎(chǔ)。這門課程的掌握程度將對其他課程的學(xué)習(xí)積極性產(chǎn)生影響。但學(xué)生普遍反映學(xué)習(xí)該門課程有較大的困難,對許多概念(如指針、形參實參、函數(shù)調(diào)用、全局變量、局部變量等)難以理解,他們認為許多概念抽象、空洞,往往在學(xué)習(xí)的初始階段感到茫然、乏味,甚至產(chǎn)生恐難情緒,直接影響到整個學(xué)習(xí)和教學(xué)效果。學(xué)生經(jīng)常學(xué)習(xí)結(jié)束后,連簡單的程序都不能編寫,其原因就是大一新生普遍缺乏計算機知識背景和算法思想,匯編語言才是計算機技術(shù)的基礎(chǔ),而不是C語言。匯編語言能夠讓學(xué)生更好地理解高級語言,高級語言大都編譯為匯編指令,最終轉(zhuǎn)化為機器指令得以執(zhí)行。所以說學(xué)習(xí)匯編語言既有助于透徹地理解高級語言的核心原理,又能明晰程序內(nèi)部的執(zhí)行過程。
匯編語言作為一種與硬件緊密聯(lián)系的低級語言,相對于其他計算機語言比較難于掌握,再加上隨著軟件技術(shù)的發(fā)展,毋庸置疑匯編語言的應(yīng)用領(lǐng)域越來越小,不少學(xué)生認為學(xué)習(xí)匯編語言在以后工作中用處不大,純粹只是為了考試過關(guān)而應(yīng)付學(xué)習(xí)。因此在教學(xué)過程中,教師首先必須向?qū)W生詳細闡述匯編語言在計算機學(xué)科知識體系中的重要作用,充分調(diào)動學(xué)生的學(xué)習(xí)熱情和求知欲望,強調(diào)學(xué)好匯編語言,并不僅僅是掌握一門編程語言,更重要的是能夠獲得直接從底層分析問題解決問題的能力,為學(xué)習(xí)高層的知識奠定基石;更要向?qū)W生說明匯編語言具有與高級語言不同的特點,正是這些特點使得匯編語言具有高級語言不可替代的作用,匯編語言也具有其他高級語言所無法企及的優(yōu)勢。
二、教學(xué)內(nèi)容的改革
“匯編語言程序設(shè)計”教學(xué)內(nèi)容包括以下幾個主要部分。微型計算機概述:微型計算機的發(fā)展過程、特點,微型計算機及微機系統(tǒng)的組成,微型計算機的三總線結(jié)構(gòu),數(shù)制和碼制等基礎(chǔ)知識;80x86微處理器:80x86微處理器的發(fā)展、特點和結(jié)構(gòu),微處理器的寄存器,微機系統(tǒng)的存儲器組織,微處理器的工作模式,微處理器的引腳信號及其功能;80x86的指令系統(tǒng):尋址方式,數(shù)據(jù)傳送類,算術(shù)運算類等指令的功能和使用,常用偽指令和運算符的使用;匯編語言程序設(shè)計:匯編語言編程格式,匯編語言程序設(shè)計的基本方法(包括分支、循環(huán)、子程序調(diào)用等)。
匯編語言是和處理器以及操作系統(tǒng)緊密相關(guān)的,隨著16位處理器和DOS操作系統(tǒng)退出歷史舞臺,32位、64位CPU以及Windows、Linux等多任務(wù)操作系統(tǒng)的出現(xiàn),[3]課程的基礎(chǔ)知識和實踐環(huán)節(jié)必須與時俱進,需要從DOS下的16位實模式編程過渡到Windows下的保護模式編程。[4]但由于多任務(wù)操作系統(tǒng)工作在保護模式,使用匯編語言直接開發(fā)的應(yīng)用程序,不能直接對硬件進行操作。應(yīng)用程序通過操作系統(tǒng)來實現(xiàn)對硬件的控制,[4]且Windows下的保護模式編程較為復(fù)雜,因此目前在大部分學(xué)校,該門課程內(nèi)容的核心仍然是DOS下的16位實模式編程,但為了教學(xué)內(nèi)容的先進性,增加了32位指令和保護模式的介紹,CPU的結(jié)構(gòu)是以386體系結(jié)構(gòu)為基礎(chǔ)的Pentium 處理器為主,摒棄了8086結(jié)構(gòu)的介紹。這種矛盾就造成了學(xué)生對許多概念不能理解,如操作數(shù)的存儲器尋址方式等,這樣直接影響學(xué)生下一步學(xué)習(xí)指令和匯編語言程序設(shè)計的積極性。
針對上述問題,筆者認為應(yīng)將16位匯編和Win32位匯編有機融合起來。16位匯編語言和Win32匯編有其相似之處,例如有著相同的寄存器、相同的指令系統(tǒng)、相同的尋址方式,只不過操作數(shù)和地址的長度不同而已,因此應(yīng)以16位匯編入手,以8086寄存器結(jié)構(gòu)、尋址方式、指令集為基礎(chǔ)逐步過渡到32位匯編,這樣內(nèi)容相對簡單,學(xué)生容易理解。重點要闡述清楚實模式下的存貯器編址和保護模式下存貯器編址,在講述處理器的工作模式時就應(yīng)該讓學(xué)生明確16位段和32位段的概念以及差別;在此基礎(chǔ)上進一步讓學(xué)生明確16位匯編和32位匯編的概念。
三、教學(xué)方法的改革
目前的匯編語言授課計劃都是在講述完所有的理論知識,包括所有的指令(傳送類指令、算術(shù)運算類指令、轉(zhuǎn)移和調(diào)用類指令、邏輯運算和移位指令、串操作指令、處理機控制指令)和偽指令后,再開始學(xué)習(xí)編寫程序。由于匯編語言指令、偽指令較多,有大量的指令和語法規(guī)則需要記憶,學(xué)生要在短時間內(nèi)掌握每條指令的功能、指令的尋址方式、指令對標(biāo)志位的影響以及指令執(zhí)行時的約定設(shè)置、需要預(yù)置的參數(shù)、隱含使用的寄存器等內(nèi)容,這將導(dǎo)致學(xué)生對課程中所講授的內(nèi)容無法消化,容易感到枯燥、厭煩,從而產(chǎn)生倦怠心理,失去了學(xué)習(xí)興趣。
筆者認為首先應(yīng)從整體上讓學(xué)生了解微機結(jié)構(gòu)及其工作原理,對學(xué)生闡述清楚指令的組成、操作數(shù)的尋址方式以及指令的運行這些最基本的概念和理論?,F(xiàn)如今的教學(xué)環(huán)境有了不同程度的提高,多媒體教學(xué)已經(jīng)普及,各種匯編語言教學(xué)軟件和課件層出不窮,把難以想象的部分以動態(tài)、直觀的圖形圖像演繹出來,讓學(xué)生易于接受和理解。比如CPU編程結(jié)構(gòu)、存儲器分段、尋址方式等可以用PPT來演示;指令的運行可以用flash等軟件形成動態(tài)圖像演繹全過程,達到了事半功倍的效果。
在講述最基本的傳送類指令、算術(shù)運算類指令和基本的偽指令后,就可以讓學(xué)生學(xué)習(xí)編寫完整的匯編語言程序,并且上機調(diào)試、運行,使學(xué)生能在實踐中掌握匯編語言程序設(shè)計,并使其熟悉指令系統(tǒng)。其余的各種指令和偽指令等內(nèi)容分解到下面的學(xué)習(xí)進程中,讓學(xué)生逐步接觸并使用這些指令,如可將轉(zhuǎn)移和調(diào)用指令分解到分支、循環(huán)程序設(shè)計的學(xué)習(xí)中;在學(xué)習(xí)數(shù)據(jù)處理程序設(shè)計時可以先向?qū)W生介紹串指令。這樣將編程環(huán)節(jié)提前,以一個完整的程序?qū)嵗龑?dǎo),通過編程與動手,學(xué)生對程序設(shè)計及一些基本概念、基本方法建立感性認識,在此基礎(chǔ)上以程序為線索再逐一展開,將使學(xué)生在整個學(xué)習(xí)過程中的每一步都目標(biāo)明確,主題清晰,基礎(chǔ)扎實,可達到循序漸進的效果。學(xué)生在此過程中還會不斷地獲得成就感,可以更大地激發(fā)求知欲望,進行自主探索和互動協(xié)作的學(xué)習(xí)。
四、實踐教學(xué)的改革
實驗教學(xué)是檢驗和鞏固已學(xué)知識的一個必要手段,是培養(yǎng)學(xué)生創(chuàng)造性的關(guān)鍵環(huán)節(jié),也是教學(xué)改革的一個重要方面。[5,6]匯編語言是一門實踐性很強的語言,實驗環(huán)節(jié)在整個教學(xué)活動中占據(jù)了舉足輕重的地位,是提高學(xué)生動手能力的重要環(huán)節(jié)。[7]
在“匯編語言程序設(shè)計”實驗中,目前主要還是要求學(xué)生編寫實模式DOS程序。但學(xué)校實驗室計算機通常不會安裝DOS操作系統(tǒng),而是安裝多任務(wù)如Windows操作系統(tǒng),因此匯編實驗程序運行在Windows下的虛擬86模式,工作在虛擬DOS環(huán)境,匯編工具為Borland公司的Tasm或Microsoft公司的Masm。匯編程序的匯編、鏈接均要輸入DOS命令,但由于學(xué)生對DOS操作環(huán)境不熟悉,在上機時不能夠熟練地在DOS環(huán)境下進行操作,使得學(xué)生對上機實驗產(chǎn)生畏懼心里。
針對上面的問題,教師一方面應(yīng)耐心講解,讓學(xué)生充分認識到實驗的重要性,熟悉匯編語言源程序從匯編、鏈接到調(diào)試運行的整個開發(fā)過程;鼓勵學(xué)生只要反復(fù)實踐,一定能夠掌握匯編語言的開發(fā)過程。實驗室提供使用更加方便的匯編語言集成開發(fā)工具,如未來匯編等。與匯編語言程序在傳統(tǒng)的DOS界面下的上機環(huán)境不同,未來匯編是在Windows界面下的集編輯、匯編、鏈接、調(diào)試為一體的16位TASM集成環(huán)境,其窗口化、菜單式及漢化的操作,使得匯編語言程序設(shè)計實驗大為方便。開發(fā)人員可以在該集成環(huán)境下編寫源程序,然后只要直接用鼠標(biāo)點擊菜單上的相應(yīng)命令,就可以完成程序的匯編和鏈接工作,直接生成可執(zhí)行文件,所有工作一次性完成;并且同時把匯編和連接時產(chǎn)生的輸出信息輸出到輸出窗口中,供用戶參考,而不會輸出到DOS的命令界面上去,省去了不同操作環(huán)境之間的頻繁切換。這一平臺可以很好地將學(xué)生的注意力集中于匯編語言程序的編寫與設(shè)計中,解決了實模式DOS程序的開發(fā)與Windows操作系統(tǒng)之間的矛盾,大大提高了學(xué)生做實驗的積極性。這對于提高學(xué)生的學(xué)習(xí)興趣、鞏固課堂教學(xué)內(nèi)容起到了關(guān)鍵作用。
五、總結(jié)
“匯編語言程序設(shè)計”作為計算機及相關(guān)專業(yè)的專業(yè)基礎(chǔ)課程,其重要性顯而易見,但是目前面臨著很大的挑戰(zhàn)。這其中的原因是多方面的,包括計算機技術(shù)發(fā)展的日新月異造成的教學(xué)內(nèi)容的滯后。面對當(dāng)前的形勢,找到合理的解決方案是當(dāng)務(wù)之急。本文主要分析了目前課程教學(xué)中存在的問題,結(jié)合教學(xué)實踐,從教學(xué)進程、教學(xué)內(nèi)容、教學(xué)方法與實踐教學(xué)改革等方面給出了課程教學(xué)改革的基本思路與策略。讓學(xué)生充分了解學(xué)習(xí)匯編語言的重要性,合理安排教學(xué)內(nèi)容,選擇適當(dāng)?shù)慕虒W(xué)方法和實踐手段,充分發(fā)揮學(xué)生的學(xué)習(xí)積極性。
參考文獻:
[1]鄭曉薇.匯編語言[M].北京:機械工業(yè)出版社,2009.
[2]程學(xué)先,林姍,程傳慧.匯編語言程序設(shè)計[M].北京:機械工業(yè)出版社,2009.
[3]馮建文,包健,嚴義.“匯編語言程序設(shè)計”課程的教學(xué)改革與探討[J].吉林大學(xué)學(xué)報(信息科學(xué)版),2005,(S2):22-24.
[4]譚毓安,張雪蘭.Windows匯編語言程序設(shè)計教程[M].北京:電子工業(yè)出版社,2005.
[5]宋人杰,周欣欣,李紅彪.《匯編語言程序設(shè)計》教學(xué)改革的探索與實踐[J].東北電力大學(xué)學(xué)報(社會科學(xué)版),2008,28(5):38-40.
[6]楊建軍,陳星.匯編語言程序設(shè)計實驗教學(xué)的研究與探索[J].實驗實科學(xué),2008,(4):34-35.
[7]王曉曄,溫顯斌.匯編語言課程教學(xué)探討[J].計算機教育,2010,(20):122-125.
(責(zé)任編輯:宋秀麗)