黃 馳,吳 昊,譚榮麗
(南寧師范大學師園學院,南寧 530226)
匯編語言是一門面向機器的計算機語言,它使用的英文助記符和二進制形式的機器指令有著一一對應的關系,并與相應的計算機硬件結構密切相關,有操作直接、運行效率高等優點,也有入門不易、可讀性不強等缺點,通常用于比較底層的系統開發。
雖然計算機程序設計的初學者直接使用匯編語言進行系統開發的機會并不多,但是由于匯編語言與計算機硬件結構及機器指令的特殊關系,通過匯編語言的學習,人們可以盡快熟悉計算機硬件結構,理解計算機基本工作原理,培養計算機思維,為進一步提高計算機軟硬件的應用開發能力打下良好的編程思維基礎。因此許多高校包括獨立學院都開設了匯編語言程序設計課程。
獨立學院是一種新型高等教育辦學形式,較公辦本科院校而言,辦學歷史比較短,辦學條件還不成熟,教學和管理經驗還需進一步積累,對教學成本的付出比較敏感。此外,獨立學院高考招生錄取分數線主要介于普通本科和高等專科之間,其學生與普通公辦本科學生相比,知識基礎、學習方法和效率、學習自主性等方面有很多的差異,具體表現在以下幾個方面。
(1)沒有充分養成課前提前預習和課后及時復習的良好學習習慣,很多學生還是覺得上課就是學習的全部環節,上完課學習任務就算完成。由于學習投入不足,學生無法對知識點進行前后聯系,常常導致知識結構沒有系統化和條理化。
(2)沒有充分發揮學習的主觀能動性,不少學生遇到學習困難,如上課聽不懂等情況,就產生逃避畏難情緒,進一步導致厭學心理。準備考試的時候,臨時抱佛腳,隨便混個及格了事,離既定的人才培養目標漸行漸遠。
(3)沒有充分認識到學習理論課程內容的重要性。不少學生因為長期受到社會上不良思潮的影響,總認為理論課程內容太抽象,不實用,學不學無所謂,不懂得“沒有正確的思想很難有正確的行動”的道理,不重視理論課程內容學習,導致理論知識不夠全面,從而無法承擔系統開發設計的任務。
因此,需要認真研究分析在獨立學院匯編語言程序設計課程教學中出現的實際問題,提出切實可行的解決方案。
通過多年在獨立學院匯編語言程序設計課程的教學實踐,筆者發現有3 個實際問題對教學效果產生重要的影響.
(1)課程內容客觀上難度比較大。由于面向機器的特點,學習匯編語言程序設計不僅需要學習程序設計的相關軟件編程知識,也需要學習理解相關的硬件結構知識。對于不少獨立學院的學生而言,學習內容的客觀壓力比較大。例如,匯編語言編程學習中必不可少的各種尋址方式應用就需要對存儲器結構管理組織以及中央處理器的相關寄存器組有正確的認識和理解。所以學習這門課程無論從廣度還是深度來說,難度都比較大。
(2)相關的教材課本前后內容展示的知識常常在結構上互為支撐、相互關聯,這無疑也大大增加了學生的理解難度,打擊了學生的學習自信心。例如,課本教材常常會先介紹相關中央處理器的工作寄存器組(如8086 的代碼段寄存器、堆棧段寄存器、指令指針寄存器、堆棧指針寄存器等),但是這些寄存器的工作原理需要在后面的章節中介紹。因此,學生一開始學習這些前后知識結構互為支撐、相互交織的教材課本內容時,不容易找到正確的切入點,增加了學習失敗的概率。
(3)匯編語言編譯環境(字符界面)與高級語言編譯環境(集成化圖形界面)的巨大操作差異,增加了學生學習過程中編程調試實踐環節的入門壓力。匯編語言編程常用的編譯工
具通常使用純字符界面進行人機交互。這種交互方式需要學習者改變在學習高級語言編程中養成的使用集成化圖形界面編譯工具的操作習慣,學會使用鍵入字符形式的人機命令逐步完成編譯、鏈接、調試、運行等編程實踐步驟,對學習者來說增加了學習的煩瑣復雜程度,具有一定的挑戰性。例如,8086 匯編語言常用的微軟公司編譯器MASM 5.0 運行在字符界面的磁盤操作系統(Disk Operating System,DOS)環境下,正常使用這個編譯工具就需要對DOS 字符界面的常用命令(如更改當前目錄命令、顯示文件及目錄命令、編輯命令等)有所熟悉,同時編譯器、鏈接器和調試器本身的使用也需要字符人機命令(如Link、Debug、Q、G、D、T 等)來操作控制。
筆者在多年匯編語言程序設計課程的教學實踐中,結合獨立學院的辦學條件和其學生的學習特點,針對上述問題總結了一些解決問題的教學思路,具體如下。
(1)根據學生自身學習能力,合理安排學習步驟及內容。對于本課程,學習者的首要任務應該是正確理解計算機硬件結構的工作原理及設計思路,然后再學習相應的指令尋址方式和指令系統,在充分夯實理論原理的基礎前提下,進一步開展適當的編程實踐內容的學習。通俗地講,就是先讀懂課本的相關理論內容,再開展實踐環節的學習。學習者在剛剛開始入門階段不宜樹立過多目標,編太多程序,其主要的目標應該是把教材讀懂,正確理解相應的原理和思路。在難度比較大的課程學習過程中,把目標定得越單一就越容易實現,這樣就有可能形成一條清晰的學習主線,把學習的難度和強度控制在可以承受的范圍內。
(2)有效地進行學習時間的管理。由于課程內容難度比較大,教師在課堂教學學時安排上需要有一定保證,除了學時長度要合理之外,也應當注意盡量不要將這門課的上課時間安排在其他需要消耗大量腦力、體力的課程之后(如高等數學和體育)。這樣更有利于幫助學生集中精力學習理解抽象的理論知識。同時對學生的課后學習時間的管理,建議課后學習時間與課堂教學時間的比例為6∶1,通過科學合理有效地安排學習的步驟、內容和時間,使學生可以承受相應的學習難度和強度,提高學習成功率。
對于課本前后內容展示的知識結構互為支撐、相互關聯,增加學生理解難度的問題,可以通過積極引導學生采用建構式學習方法預習和復習來減少其對學習的消極影響解決。教師在課堂上可以明確指出前后關聯的知識點,引導學生利用課前預習和課后復習的時間大膽假設,小心求證,通過反復多次引導學生進行前后相關章節的細心研讀和推敲,將相關知識內容相互聯系融會貫通,不斷構建和完善腦海中計算機工作原理模型。這樣不僅有助于學生計算機思維的培養,也可以使其逐漸具備獨立思考和探索未知領域的能力。
例如,在介紹中央處理器的工作寄存器組時,教師可以清晰指出教材中與這些寄存器的使用原理相關的后續內容章節所在之處,布置相應的預習任務,引導學生更有效率地預習。
(1)可以使用微課慕課等視頻教學手段,輔助學生在課后進行重復多次的進行操作環節復習,減少學生因為操作和理解速度跟不上教師演示操作速度而產生的挫敗情緒。
(2)運用案例法教學,使用一個簡單的源程序實操編譯過程為例,充分展現DOS 和宏匯編程序操作步驟和特點,引導學生積極理解每一步操作相應人機交互命令的原理和內在邏輯關系,這樣使學生更容易記憶和靈活應用,提高他們分析問題和解決問題的能力,防止僅僅依靠死記硬背操作步驟應付式完成實踐任務。
(3)注意引導學生使用正確的方法完成程序的調試。匯編語言編程過程難免會有錯誤,如何發現錯誤、改正錯誤是調試程序過程中很重要的環節。首先,程序運行前應該進行充分的靜態檢查,分析出容易出錯的地方,然后按照模塊化編程調試等方法制定調試方案并執行,從而減少錯誤搜索范圍,最終找出錯誤并改正。同時在匯編語言的學習過程中,應安排一些比較容易觀察結果并直接反映計算機內部工作原理的實踐內容,這樣更有利于學生把注意力集中在理解計算機的工作原理上,更有效地培養他們的計算機思維。
例如,可以使用串傳送指令(Move String,MOVS)的應用編程實例,通過Debug 調試軟件的顯示功能(命令D)將內存相應區域的存儲器單元內容變化清晰地展現出來,通過單步執行命令T 可以看到每一條指令單步執行后中央處理器各個寄存器的狀態變化。
為了讓學生學會使用DOS 顯示功能調用,可以為學生布置一個實操編程實驗任務,在屏幕上顯示自己的名字拼音和學號,學生完成后對DOS 功能調用會有一個比較深刻的理解。
學習好匯編語言程序設計課程對于絕大部分學生來說不是一項輕松的學習任務,本文總結了獨立學院在匯編語言程序設計課程教學過程中存在的一些問題,并針對性地提出一些解決思路和實現方法,以提升學生的計算機思維和自主學習的能力,培養高素質的計算機應用型人才。