《組合語言程式設計》課程教學改革與實踐論文

才智咖 人氣:1.18W

摘 要:為了提高《組合語言程式設計》的教學效果,本文從教學方法、實踐教學、成績考核等方面進行了教學改革探討。

《組合語言程式設計》課程教學改革與實踐論文

關鍵詞:組合語言程式設計; 教學方法; 內聯程式設計

1課程的現狀

組合語言不同於其它高階語言,必須要求程式設計人員有一定的硬體基礎,如對CPU的結構、CPU與儲存器等部件的資料傳送過程必須要有基本的瞭解,這樣才能學好這門課程。在教學過程中,我們發現學生對高階語言程式設計學習積極性高,對組合語言課程缺乏興趣,因為課程本身指令複雜,規定繁多,再加上學習彙編指令前對CPU的相關工作過程理解不透,導致學生厭學,又由於本課程面對的低年級學生只有高階語言的基礎,習慣於高階語言的自然表達,初次接觸計算機硬體知識心理上有恐懼感,更難以適應繁雜的低階語言。

針對本課程的特點,對教學內容、環節、過程等進行了精心設計,下面就教學方法的設計、實踐教學方法、課程考核形式等方面進行的一系列改革進行詳細探討。

2教學方法設計改革

為了避免學生因指令複雜,規定繁多、難度大而對該課程產生畏懼的學習心理,教師有必要對教學內容進行合理組織,對教學過程進行精心的設計。

2.1利用FLASH技術,使教學難點容易理解

在多年的教學過程中,我發現學生在學習CPU結構這章節中,對介紹的CPU由哪些暫存器(名稱、大小)構成,各個暫存器的含義,用途,CPU與儲存器等部件的資料傳送過程,會覺得很抽象,多數同學都是採用死記硬背的方式,這章節是第二章節的內容,也是能否學好該課程關鍵的`一章,如果理解不深,這無疑為後續的學習,特別是定址方式的學習埋下了隱患。

針對這個問題,教師有必要對教學過程進行精心的設計。

在這章節中我們利用FLASH技術,把各種定址方式下傳送指令的CPU與儲存器等部件的資料傳送過程以動畫形式展現給學生,使得複雜,抽象的過程變得直觀,學生理解比較容易,也加深了對定址方式的記憶。

2.2對比法教學

目前計算機專業的課程設定中,《彙編程式語言的程式設計》課程通常是學習完C語言課程之後開始學習的。所以在教學中可以採用對比法來講解課程,對某些語法知識點和程式設計過程我們可以以C語言和組合語言對應分析。

例如在介紹暫存器時,由於在一般的c語言程式中並沒有直接使用到暫存器。因此,我們使用vC++6.0環境下的除錯工具顯示一個c語言程式及其對應的機器碼,讓學生看到編寫彙編程式暫存器的用途,加深了學生對組合語言程式的理解。

int m=5,n=6,c;

004010E8 mov dword ptr [ebp-4],5

004010EF mov dword ptr [ebp-8],6

c=m+n;

004010F6 mov eax,dword ptr [ebp-4]

004010F9 add eax,dword ptr [ebp-8]

004010FC mov dword ptr [ebp-0Ch],eax

在介紹語法知識時,比如變數的定義:

C語言中的變數定義形式如下:

int c1,c2=0;

組合語言的變數定義形式如下:

cl DW ?

c2 DW 0   2.3抽象概念的比喻教學法

在對段地址和偏移地址的講解過程中,可以採用比喻法,把運算元比喻成學生,把教室的房間號比喻成段地址,教室內每個座位編個號,編號就是偏移地址,要想到教室把某個學生找到,就要找到相應的教室號,再到對應的座位號找到這個學生,同理,要想把主存中的運算元找到就要找到段地址和相應的偏移地址,另外要讓學生知道每個教室裡的座位號都是從0號開始編號的,也就是每個段裡的偏移地址如果不特別指定,也是從0號開始編號的。

3實踐教學改革

3.1增強實驗環節,做一些實際專案

程式設計對於大多數的初學者來說有一定的難度。對於給定的一個實驗題目,許多學生往往感到無從下手。目前的上機實驗時間往往很短,常常是學生才剛剛有點入門,實驗環節就結束了;且課外實踐環節幾乎沒有,導致學生即使課內學的再好也不會應用。

在實驗設計方面可以先把一些經典的程式提供給學生,例如分支結構的設計、迴圈結構的設計等,讓學生在寫出C語言程式之後再設計彙編程式,找出兩者程式設計思維的區別。這樣通過一段時間的經驗積累,就能夠編寫比較複雜的的程式,由於上機時間有限,可以每次實驗課之後佈置一些題目供學生選擇思考,讓學生課外分組來設計這些程式,題目的型別可以是研討型的讓學生從更多的角度去思考上機實驗過的題目,編寫出不同的程式;另一種為程式設計型,

例如可以設定這2道題目,音樂小鍵盤、貪吃蛇遊戲等,以加強同學們的程式設計能力的訓練。

3.2採用與高階語言混合程式設計

目前越來越多的場合要使用匯編語言和高階語言進行混合程式設計,因此在教學時應強調組合語言和C/C++的混合程式設計,並且這樣也可以為今後嵌入式系統軟體開發的學習打下堅實的軟硬體基礎。

在實驗課中可以藉助 Visual C++開發工具,採用內聯彙編的方式,在 C/C++源程式中嵌入彙編指令序列完成一定的功能,並讓學生設定斷點然後跟蹤執行,同時注意觀察暫存器的內容和變數的值。這樣可以一方面讓同學們熟練掌握兩種語言的切換使用,另一方面讓他們感受到兩種語言各有特點。例如可以利用匯編語言處理高階語言中不方便處理的一些問題。

4課程考核形式改革

因為“組合語言程式設計”是實踐性很強的一門課程,所以實驗課成績應該在總成績中佔有相當大的比重。目前大多數高校的組合語言課程的實驗課成績只佔很小的比重,即理論知識往往占課程期末考核總成績的70%~80%,這樣往往會導致學生不得不將大量的精力放在理論知識的學習中,結果只會造就大批的應試高手。在教學中,我們遇到過有的學生考試試卷能考90分以上,卻連最基本的計算機操作都不能動手。今後這門課程的考核,實驗課成績應該提高到佔總成績的1/2。老師在實驗中應該營造出互動氣氛,檢查每個學生的完成情況同時做好記錄,根據學生的實際動手情況給出他們的平時實驗成績,而不是隻依據交上來的實驗報告,這樣也能杜絕抄襲之風。

5結束語

通過教學改革的實踐,在一定程度上提高了他們對本課程的學習積極性,又降低了學習難度。良好的教學效果是永遠追求的目標,在今後的教學中,我們還需要不斷進行探索、研究和嘗試,不斷更新觀念,發現自身教學過程中的問題,找到解決辦法,提高教學效果。

參考文獻:

[1] 王成耀.80x86組合語言程式設計[M].北京:人民郵電出版社,2008(第2版).

[2] 卜登立,彭嵩鬆,唐衛東,龍侃.“組合語言程式設計”課程教學改革研究與探討[J].井岡山學院學報,2009,30(10):124-127.

[3] (美)布魯姆著,馬朝暉譯.編語言程式設計[M].北京:機械工業出版社,2006.

[4] 全選悅,趙煥平.組合語言的教學改革和思考[J].福建電腦,2008(2):201.