摘要:通過對《匯編語言程序設計》課程的再認識,闡述了《匯編語言程序設計》教學面臨的主要問題,從提升教師素質、采取新的教學方法和教學模式等方面入手,探討了抓住課程教學的重點與難點、合理安排前導課程、培養(yǎng)學習興趣、重視實踐教學等幾個方面綜合促進《匯編語言程序設計》教學的新思路。
關鍵詞:匯編語言;教學方法;實踐
中圖分類號:G642 文獻標識碼:A 文章編號:1009-3044(2009)05-1154-02
Teaching Discussion of Assembly Language Programming
CHEN Ying-ge, WANG Xiao-ying
(Dept. of Computer Science, Changshu Institute of Technology, Changshu 215500, China)
Abstract: Through the recognition of assembly language programming course, this paper set forth the main teaching problems up against. Started with improving quality of teachers, adopting novel teaching methods and patterns, the paper discussed some new ways to promote quality of teaching assembly language programming, such as grasping course emphasis and difficulty, arranging preceding courses reasonably, cultivating study interest and attaching importance to practice teaching.
Key words: assembly language; teaching method; practice
1 對《匯編語言程序設計》課程的再認識
對《匯編語言程序設計》課程的普遍認識是匯編語言是用英文縮寫符號代替二進制編碼的操作指令、用符號代替地址或操作數(shù)據(jù),以取代繁瑣難記的機器語言,是早期使用的計算機低級編程工具[1]。相對于高級語言來說,它要求更深入地了解硬件結構,編程與調試過程繁瑣,沒有很好的集成環(huán)境;雖然程序執(zhí)行效率高,但在處理器飛速發(fā)展的今天,其優(yōu)勢已經(jīng)逐步消失。因此很多人認為開設《匯編語言程序設計》課程的意義不大,著重開展面向對象的高級語言教學才是符合現(xiàn)在網(wǎng)絡時代的主流。
而本人在教學和實踐過程中深切體會到匯編語言不僅是最快最有效的語言,也是能夠利用計算機所有硬件特性并能直接控制硬件的唯一語言;它是《微機原理》、《操作系統(tǒng)》等核心課程的先修課程,而且對于訓練學生全面掌握計算機基礎知識和程序設計技術起到了非常重要的作用。
但《匯編語言程序設計》課程的處境在計算機飛速發(fā)展的今天,確實發(fā)生了變化[2-3]。首先,匯編語言比較以往面向過程的高級語言和現(xiàn)在面向對象的高級語言開發(fā)工具,更顯得低級而煩瑣;其次硬件的低成本、高智能降低了軟件開發(fā)與硬件的相關性;專業(yè)細化,使很多計算機專業(yè)學生對自動化控制、儀器、儀表及家用電器等方面的應用不甚了解,注意力更多地轉移到日益熱門的網(wǎng)絡技術;《匯編語言程序設計》多以80x86處理器為教學原形,而當前匯編語言的應用更多集中在采用各種處理器的嵌入式系統(tǒng)開發(fā)中,不能立即學以致用。計算機技術發(fā)展也使過去的《匯編語言程序設計》教學方式時過境遷,需要做必要的轉變和調整。
2 《匯編語言程序設計》課程面臨的主要問題
由于匯編語言不直接面向信息處理應用系統(tǒng)的開發(fā),使得《匯編語言程序設計》這門課成為計算機專業(yè)教學體系中較容易被忽視的一門核心專業(yè)基礎課程。忽視教學研究導致了教學改革和課程建設的滯后,又反過來影響著《匯編語言程序設計》課程教學效果?!秴R編語言程序設計》教學在思想、方法和教學模式等方面的現(xiàn)狀還是不容樂觀的。
1) 教師對《匯編語言程序設計》課程的重要性認識不足,社會實踐經(jīng)驗少,不能從匯編語言應用的廣泛性和深入性角度激發(fā)學生學習興趣。存在著重理論輕實驗的思想。教學方法過多采用講授法。多媒體教學引入課堂后,使得部分教師過分依賴多媒體演示,讓學生看看了事,不重視讓學生實際操作。另外,學生對專業(yè)基礎課普遍不夠重視,加上匯編語言是一門比較抽象的課程,學習起來比較困難,教學中容易對課程的難點易敷衍了事。
2) 教學方法陳舊。匯編語言的實驗大都是在DOS操作系統(tǒng)下進行的,由于現(xiàn)在采用的多是Windows操作系統(tǒng),學生普遍對DOS操作系統(tǒng)不熟悉,造成學習效果更不理想;另外,在DOS環(huán)境下進行實驗比較復雜,匯編語言有大量的語法規(guī)則需要記憶,程序結構不易讀懂,上機調試結果不直觀易出錯,使學生容易望而卻步;匯編語言課程實驗基本安排在PC機上進行,學生對硬件缺乏感性認識,普遍對實驗過程和結果感到抽象、難以理解。
3) 教學模式僵化。教師在教學中一手包辦,學生照著現(xiàn)成步驟或跟著教師動幾下,實驗就算完成了。學生只是機械模仿,缺少動手和動腦的機會,能力得不到相應的提高。不利于提高學生發(fā)現(xiàn)和解決問題的能力,不利于引導學生突破思維定勢,形成創(chuàng)新思維方法和智能的發(fā)展。
4) 學生基礎薄弱。很多學生的專業(yè)基礎、知識結構相對薄弱;一些前導課程如C語言、模擬電路、數(shù)字電路和計算機組成原理等沒有學好或沒有及時得到先修,使得學生在學習匯編語言時沒有掌握必要的計算機硬件知識,缺乏對計算機組成及結構的認知。
這一切都是實實在在擺在教學中的問題。迫切需要對該課程教學所涉及的一些重要問題加強研究,探索新的《匯編語言程序設計》課程教學的有效方法和途徑,使之能夠真正達到作為核心專業(yè)基礎課的教學目的。
3 《匯編語言程序設計》教學探討
3.1 轉變觀念,提高教師自身素質
教師既要有匯編語言理論知識和實踐知識,又要有教育學、心理學和教學法方面的知識。通過對新理論、新技術的學習,對匯編語言教學意義的深刻了解,用廣博的知識和人格魅力引導教育學生。教師要富有鉆研和創(chuàng)新精神,不斷學習提高自己的教學能力和知識水平,接受新的教育理論、新的教育思想,指導自己的教學實踐,使自己和學生都能從《匯編語言程序設計》教學中找到樂趣。
3.2 采取新的教學方法和教學模式
首先需要對課程進行合理編排,讓學生能首先學習模擬電路、數(shù)字電路、組成原理等前導課程,使得學生在學習匯編語言前就對計算機硬件及其組成有一個系統(tǒng)的認知;同時提醒學生前導課程的重要性,要求前導課程沒學好的學生能及時補課;課堂上簡略和學生一起回憶前導課程的相關內(nèi)容,使他們溫故知新,前后知識能融會貫通。
在教學過程中及時引導學生根據(jù)基本內(nèi)容來綜合基本知識,升華基本規(guī)律,結合實際應用,達到舉一反三,使大多數(shù)同學能夠扎實掌握教材基本內(nèi)容和重點內(nèi)容。在教學內(nèi)容各模塊基本掌握的情況下,注重從系統(tǒng)整體分析與設計角度出發(fā),從更高層次讓學生進一步掌握基本內(nèi)容和重點內(nèi)容,使學習優(yōu)秀的同學能夠利用基本知識,從系統(tǒng)角度分析教學內(nèi)容各模塊,最終實現(xiàn)學習方法的創(chuàng)新及基本教學內(nèi)容在創(chuàng)新實踐中的應用。
另外,在教學過程中,還要突出重點和難點。匯編語言的重點難點主要有寄存器功能分配、分段管理技術、尋址方式、變量在內(nèi)存中的存儲等。對于上述匯編語言課程的重點和難點,主要從下面幾方面來解決:1)在課堂教學過程中,教師首先在備課上對重點、難點內(nèi)容下工夫,充分理解該問題的內(nèi)涵,總結問題的規(guī)律性,深人淺出解釋問題,突出概念,理清思路。在難點上,用幾種方法進行對比介紹,找出突破口。同時,根據(jù)以往學生容易出現(xiàn)的問題,結合多媒體教學手段,利用多媒體動畫效果,形象地向學生演示如尋址過程等方面的內(nèi)容,增強學生對這些內(nèi)容的感性認識;2)在布置課后作業(yè)時,加大重點、難點尤其既是重點又是難點內(nèi)容方面的習題,同時在習題講解時突出強調該內(nèi)容在實際中的應用,通過相關訓練來使學生進一步認識和學習該問題;3)在實驗教學中,尤其是在必做實驗內(nèi)容的安排上,進一步設置與重點、難點相關的內(nèi)容,學生通過直觀實驗結果來完全理解該問題的內(nèi)涵。通過這樣的方法,使學生能夠有效地掌握該課程內(nèi)容。
最后,我們應更新教學手段,采用討論和交流結合的方式,鼓勵學生參加大學生科研活動。由于匯編語言程序設計具有實踐性強的特點,對學生自主學習能力要求較高,可以組織討論小組,實行每周一題,組織學生課后討論,課上交流,既加深理解,又鍛煉了交流表達能力,同時有可以及時發(fā)現(xiàn)存在的問題;就某些專門問題,引導學生進行深入研究。
3.3 培養(yǎng)學生興趣,提高學生創(chuàng)新能力
隨著高級語言的不斷發(fā)展,學生學好匯編的意識越來越淡泊,甚至認為沒有學習的必要。因此要結合教師在教學和實踐中的具體事例突出匯編語言應用的廣泛性和重要性,培養(yǎng)他們的學習興趣。讓學生了解到高級語言不能完全代替匯編語言;匯編語言是最接近計算機硬件的編程語言,用它編寫的程序速度通常要比高級語言快幾十到幾百倍;通過學習匯編語言,可以了解到如何有效地設計數(shù)據(jù)結構,讓計算機處理得更快,如何使用更少的存儲空間;同時,學習匯編語言可以熟悉計算機內(nèi)部運行機制,有效地提高調試能力;此外,在第一堂課,教師還可以列舉一些實例,如音樂程序,動畫程序和一些典型的病毒程序等,激發(fā)學生的興趣。有條件的還應結合教師實際科研項目,說明匯編語言有著廣泛的應用領域。
另一方面,在平時授課時應改變傳統(tǒng)灌輸式教育,力求打破學生的思維定視,培養(yǎng)學生思維的靈活性,努力創(chuàng)造以學生為主體的生動的學習環(huán)境,注重教學的民主性,尊重學生不同的意見和觀點,尊重學生的首創(chuàng)精神。教師在授課中盡力讓學生多思考,提高創(chuàng)新思維水平。老師授課易少而精,有針對性地解決學生的一些實際問題,避免一部分學生出現(xiàn)“唯書本知識——死板性;思路狹窄——單一性;雜亂零散——無序性;浮光掠影——淺表性;思維遲鈍——緩慢性”等弱點。例如在應用匯編語言指令編寫程序時,學生會有多種不同的方法,雖然有些方法不是最優(yōu)的甚至是錯誤的,但要鼓勵學生用不同的方法。老師可以分析一個具體的例子,并把學生的不同方法介紹給全班同學,這樣可以鼓勵學生創(chuàng)新性思維,培養(yǎng)他們的創(chuàng)新能力,讓學生在學習中體會樂趣,不斷探索創(chuàng)新。
3.4 重視實踐,提高動手能力
匯編語言是一門實踐性極強的課程,學習并真正體會和掌握匯編語言程序設計的最好方法是對其進行充分的實踐。
首先,加大實驗課的比重,讓學生有充足的時間去上機實踐,通過調試和修改程序,加深對課堂知識的理解;第二,在實驗中還可以應用一些輔助工具使學生能“看到”計算機硬件的工作,進而理解其工作原理。通過學習使用Debug,讓學生熟練使用一些簡單的命令如D(顯示內(nèi)存命令),A(匯編命令),R(顯示修改寄存器命令),T(單步跟蹤命令),U(反匯編命令)等,學生就能跟蹤觀察程序的運行細節(jié),更直觀地看到系統(tǒng)是如何分段和使用段結構的,觀察CPU中各個寄存器的狀態(tài),觀看計算機存儲器的內(nèi)容等等,讓平時看不見摸不著的東西變得很實在,易于學生理解;第三,對實驗的中間結果和最終結果展開角度分析,跟蹤每條指令,其指令地址、數(shù)據(jù)地址、寄存器和存儲器內(nèi)容的變化,用課堂教學的理論知識,分別加以解釋和驗證,一方面加強學生對理論知識的理解,另一方面,通過言傳身教,培養(yǎng)學生的觀察能力、分析能力和上升到理論高度的總結概括能力;第四,對于驗證性實驗,教師的演示應該是分步驟的、由淺人深的,符合學生的接受規(guī)律,可以嘗試將復雜的算法分階段演示,引導學生逐步了解算法的執(zhí)行過程。教師的演示與學生的實踐可以穿插進行,并且注意反復,學生通過對實驗現(xiàn)象的觀察,可加深理解和掌握理論知識。對于非驗證性實驗,教師可以給學生提示各種不同的解決方法,拓寬學生的思路,使學生能多角度多方向地思考問題、分析問題、解決問題。
4 結束語
《匯編語言程序設計》作為核心專業(yè)基礎課,在計算機課程體系中的地位是不可忽視的。從幾年從事匯編語言程序設計的教學經(jīng)驗來看,學生蘊藏著巨大的潛能,關鍵是靠教師去引導去發(fā)掘。教師應積極研究改革教學內(nèi)容、方法及手段,采取多種途徑,提高教學質量和學生解決問題的能力。講授時不僅要理論聯(lián)系實際,還要注重形象性和趣味性,幫助學生理解。培養(yǎng)他們的興趣,提高教學效率。
參考文獻:
[1] 吳向軍, 李磊, 梁志勇. 匯編語言程序設計[M]. 北京: 高等教育出版社, 2001.
[2] 郭曉偉. 匯編語言的優(yōu)越性及實用性[J]. 中國科技信息, 2006, (3):215.
[3] 張全福. 匯編語言程序設計實驗教學改革與探索[J]. 教學研究, 2005, (11):545-546.