趙正偉,曹敦虔,劉愛玲
(廣西民族大學 理學院,廣西 南寧 530006)
匯編語言是一種最接近硬件的低級編程語言,它用助記符替代機器指令操作碼,用標號或地址符號來代替機器指令中的操作數地址或指令.[1]對于初學者來說,匯編語言指令繁多、語法規則復雜、抽象難懂、編程效率低下、調試困難、不易維護、學習起來枯燥無味.[2-3]近年來在高等教育改革的推進以及按畢業生就業率調整專業設置的驅使下,很多高校都在壓縮匯編語言課時,甚至有些高校直接取消匯編語言課程.
然而匯編語言是介于硬件與軟件之間的一門編程語言,對于電子類專業、計算機偏硬件專業的學生系統掌握專業技能方面存在著諸多優點,[4-6]主要體現在以下幾點:(1)匯編語言能直接操作控制處理器的各種寄存器、外設、I/O端口、電路等硬件;(2)匯編語言能讓編程人員更好地去理解高級編程語言,比如C語言;(3)能夠鍛煉編程人員的編程思維邏輯,建立軟硬件兼備的編程體系.另外,匯編語言的實時性強、代碼效率高、節省內存、運行速度快.因此,匯編語言是一門非常重要的專業基礎課,特別是對于電子類和計算機相關專業的學生來說,匯編語言與高等數學、大學物理、大學英語等公共課程一樣重要,學習和掌握匯編語言編程是十分必需的.
匯編語言是一種直接面向機器結構的低級程序設計語言,因此,學習匯編語言之前,應該首先學習掌握相應機型的硬件組成結構,特別是該機型的CPU構成、存儲器尋址方式、指令系統集合等,只有在些前提下,才能使用匯編語言進行結構化程序設計.目前,匯編語言課程基本上都是基于80X86系列機型的8086/8088CPU為背景進行匯編語言程序設計,該編程環境又需在DOS環境下編輯調試,因此,除了要講解8086/8088CPU內部組成原理、存儲器尋址方式,還需補充DOS操作系統、DOS命令等知識,前期理論知識占用了大量學時,真正用于匯編語言程序設計的學時很少.而教師在教學過程中,因教學學時少,教學手段太單一,教學方法落后,大多圍繞課本進行知識講授,沒有結合實際應用擴展,實驗內容的設計也較淺顯.
匯編語言的先修課程包括《計算機文化基礎》、《C語言程序設計》,后續課程有《編譯原理》、《操作系統》、《數據庫原理》等,與該課程實際關聯度不大,專業學習中實際應用少.因此,許多學生認為學習匯編用處不多,而該課程又需熟悉掌握硬件構造、理論知識較多,且抽象難懂,導致學生普遍學習興趣低,學習積極性差,逃避學習、厭學情緒嚴重.
學生早已習慣在高級語言的可視化集成環境下進行程序開發,而匯編實驗還需采用MASM、LINK等DOS命令行編譯連接工具,這對初學者來說存在一定的困難.匯編語言的指令又受限于具體機器的指令系統,編寫匯編程序需在程序邏輯、內存分配、尋址訪問等的學習投入較多精力,而且匯編語句書寫煩瑣,程序結構冗長.在調試程序時,除了需理解當前指令的含義,還需對指令中所用資源的狀態及執行影響全面掌握,否則極易導致運行調試錯誤.
基于問題學習(Problem Based Learning,以下簡稱PBL)是一種將教學活動置于有意義的問題情境中,強調以問題為中心進行各種探究學習,通過設定的問題讓學生合作去解決真實問題,來學習問題背后所隱含的知識點,從而形成掌握解決問題的技能,形成自主學習能力.PBL教學法起初由美國精神病學教授巴羅斯在1969年提出,主要在醫學教育領域應用,目前該教學模式已廣泛應用于各個院校的各個學科,是教學效果比較突出的一種教學方法.而PBL教學法目前在匯編語言程序設計教學中嘗試甚少.
基于問題學習的PBL教學法在匯編語言語言程序設計教學改革的思路:充分考慮學生的基礎及認知程度,在教學過程中,以PBL教學模式為主導,體現以學生為中心,教師引導的思想,利用多媒體技術、典型的案例來展示抽象的結構模型、概念等,采用重難點精講、關聯對比、合作實訓等方法,利用專業實驗室,加強師生互動、生生合作,培養學生的交流能力、團隊合作能力以及創新能力,實現教學模式從理論教學為主,向理論應用型教學轉變.匯編語言程序設計的實踐性較強,課堂教學時間短,教師應及時跟蹤軟硬件技術發展前沿,關注國內外相關課程最新的教學及實踐成果,跟進企業需求,設計出一系列鮮明特色、層次分明的項目案例以供教學使用.
教師應根據教學目標、知識體系及技能要求,綜合考慮學生能力、實用性、趣味性、復雜度的基礎上,向學生提出難度適合的問題或項目.所設計的問題或項目應對班級不同程度的學生具有吸引力,并且能較大程度的發揮學生的創造空間.以下是我們在教學實踐中所構建的部分問題:(1)匯編語言與機器語言及高級語言之間的關系;(2)匯編語言程序可否在可視化環境下進行編譯、調試;(3)如何用匯編語言編程實現DOS命令中的COPY功能;(4)如何編寫各進制數之間轉換的程序;(5)如何演示MOV指令在CPU內的完整指令流程;(6)如何使用DEBUG命令實現對CPU寄存器、內存及指令內容的查看改寫操作.
對于規模較大,難度復雜的問題,可進一步設計出該問題的PBL各分單元方案的問題,從而對核心問題進行分層分解,以降低難度,融入各具體知識技術的訓練中,易于調試成功.然后再逐步遞增規模與難度,使其趣味性和實用性層級增強,最終解決此復雜問題.
匯編語言程序設計是一門實踐性與應用性較強的課程,教師應根據課程學習目標,設置難度適中的實驗訓練項目,并貫穿整個實驗教學過程,可以讓學生按規定人數組建項目課題小組,利用課余時間,通過團隊合作,查閱資料、分析問題、解決問題、設計方案,最終提交程序代碼和項目方案.教師只作為組織者與引導者,以問題引導為主,利用項目案例驅動,讓學生成為解決項目的主體,通過組員之間積極主動地學習、討論、交流與合作,使學生加深對各知識點的系統理解與掌握,培養學生的自學能力、創新能力、合作精神等.
教師可根據教學需要,結全企業實際需求,完善教學、實驗培養方式.學校最為關心的是學生畢業后的就業情況,因此,可以讓企業與學校合作開發些項目案例,選取有針對性、短小精悍、趣味性強、難易適中的實用型小項目用于實際教學中.項目案例的選取堅持以下幾個標準:(1)案例選取是否適合本校學生的實際接受水平,難易須合適;(2)項目案例是否有不同種類,比如驗證性、創新性、綜合性等;(3)項目案例是否豐富,應在時間上、不同應用領域都有所反應;(4)項目案例是否具有時效性,是否夠新穎.
在匯編語言程序設計教學過程中,堅持基于PBL的教學模式為導向,結合實際應用的真實項目案例進行教學,可有效激發學生的學習興趣,促進學生的學習積極性、主動性和創新性,對培養學生的自主學習能力和團隊合作精神均有較好的效果.但是,匯編語言教學改革不是一步到位的,需要不斷地發現新問題,更新教學內容、案例,只有通過不斷地教學探索與實踐,更新教學理念,豐富完善教學方法手段,才能不斷提高匯編語言程序設計的教學效果,全面提升教學水平與質量,真正培養出社會所需的人才.