摘 要:本文從目前“ARM匯編語(yǔ)言程序設(shè)計(jì)”課程教學(xué)中存在的問(wèn)題入手,從教學(xué)內(nèi)容、教學(xué)方法、教學(xué)手段,實(shí)驗(yàn)教學(xué)等幾個(gè)方面討論了提高課程教學(xué)質(zhì)量的思路與策略。
關(guān)鍵詞:ARM;匯編程序設(shè)計(jì);教學(xué);比較法教學(xué)
中圖分類(lèi)號(hào):TP313-4
1 課程的地位與現(xiàn)狀
“匯編程序設(shè)計(jì)”是計(jì)算機(jī)及相關(guān)專(zhuān)業(yè)的專(zhuān)業(yè)基礎(chǔ)必修課,學(xué)生通過(guò)本課程的學(xué)習(xí),首先,可以更加深入的理解計(jì)算機(jī)硬件系統(tǒng)的組成結(jié)構(gòu)和原理,可以更好的理解寄存器,中斷,尋址方式等概念;其次,可以促進(jìn)對(duì)高級(jí)編程語(yǔ)言相關(guān)概念的理解,高級(jí)語(yǔ)言在編譯時(shí)通常會(huì)先生成匯編語(yǔ)言代碼,然后再轉(zhuǎn)換為最終的機(jī)器碼,學(xué)習(xí)匯編語(yǔ)言程序設(shè)計(jì)可以充分理解程序的編譯執(zhí)行過(guò)程,同時(shí)學(xué)生對(duì)于堆棧的使用、子程序調(diào)用等過(guò)程會(huì)更清晰;利用匯編語(yǔ)言還可以設(shè)計(jì)出效率極高的核心底層程序,如設(shè)備驅(qū)動(dòng)程序,匯編語(yǔ)言程序能夠直接有效地利用機(jī)器硬件資源,因此用匯編語(yǔ)言編寫(xiě)的程序一般比用高級(jí)語(yǔ)言編寫(xiě)的程序執(zhí)行的快,且所占內(nèi)存較少,在一些實(shí)時(shí)控制系統(tǒng)中,這點(diǎn)更不可缺少和替代[1]。因此本課程一直是計(jì)算機(jī)專(zhuān)業(yè)的核心課程之一,在整個(gè)計(jì)算機(jī)專(zhuān)業(yè)課教學(xué)中起著承上啟下的作用,為后續(xù)課程的學(xué)習(xí)打下重要的基礎(chǔ)。而目前以ARM為核心的嵌入式技術(shù)逐漸成為各個(gè)高校教學(xué)的主流,基于ARM架構(gòu)的匯編語(yǔ)言程序設(shè)計(jì)是學(xué)習(xí)嵌入式技術(shù)的基礎(chǔ)。
但是在實(shí)際教學(xué)過(guò)程中,往往教學(xué)效果并不好,學(xué)生學(xué)習(xí)的積極性不高。筆者認(rèn)為主要包括以下一些問(wèn)題:(1)指令多而且復(fù)雜,難以記憶;(2)課程的內(nèi)容比較抽象,與高級(jí)語(yǔ)言程序設(shè)計(jì)有較大的差別;(3)課程內(nèi)容滯后于當(dāng)前計(jì)算機(jī)技術(shù)的發(fā)展;(4)課程內(nèi)容連貫性強(qiáng),如果有一部分內(nèi)容掌握不好就會(huì)造成知識(shí)脫節(jié);(5)實(shí)踐教學(xué)環(huán)節(jié)薄弱。對(duì)“ARM匯編語(yǔ)言程序設(shè)計(jì)”課程教學(xué)進(jìn)行改革,從而提高課程的教學(xué)質(zhì)量,達(dá)到預(yù)期的教學(xué)效果是我們急需解決的問(wèn)題。筆者經(jīng)過(guò)教改探索,認(rèn)為應(yīng)從以下幾點(diǎn)進(jìn)行改革。
2 合理安排教學(xué)內(nèi)容
在“ARM匯編語(yǔ)言程序設(shè)計(jì)”課程中主要包括三個(gè)部分,第一部分主要介紹匯編語(yǔ)言程序設(shè)計(jì)的基礎(chǔ)知識(shí)和ARM系列微處理器,第二部分是ARM指令系統(tǒng),第三部分是ARM匯編語(yǔ)言程序設(shè)計(jì)。目前授課時(shí)都是先講完所有的指令(包括數(shù)據(jù)處理指令,Load/Store指令,分支指令,程序狀態(tài)寄存器指令,協(xié)處理器指令和軟件中斷指令)以及偽指令后,再開(kāi)始講授如何編寫(xiě)匯編程序。學(xué)生需要記憶大量的指令、偽指令的格式和功能,卻不知如何用來(lái)編寫(xiě)程序,導(dǎo)致無(wú)法理解消化所學(xué)內(nèi)容,容易感到枯燥,學(xué)習(xí)興趣不高[2]。
筆者認(rèn)為可以將課程內(nèi)容進(jìn)行調(diào)整。比如講完數(shù)據(jù)傳送指令、運(yùn)算類(lèi)指令之后就可以講一些順序程序設(shè)計(jì)的實(shí)例并讓學(xué)生完成一些簡(jiǎn)單的題目,在實(shí)際做題過(guò)程中更好的學(xué)習(xí)指令的功能和用法。同樣在講述指令的條件執(zhí)行時(shí)與分支和循環(huán)程序設(shè)計(jì)結(jié)合起來(lái),講述分支指令BL時(shí)與子程序設(shè)計(jì)結(jié)合起來(lái),將編程環(huán)節(jié)提前,通過(guò)實(shí)際的例子讓學(xué)生建立起感性認(rèn)識(shí),對(duì)指令的掌握會(huì)更好,在此過(guò)程中學(xué)生會(huì)建立成就感,學(xué)習(xí)興趣也自然產(chǎn)生了。
另一方面,“ARM匯編語(yǔ)言程序設(shè)計(jì)”課程與其它一些專(zhuān)業(yè)課程密切相關(guān),在安排教學(xué)內(nèi)容時(shí)要盡量注意課程之間的銜接與融合。“ARM匯編語(yǔ)言程序設(shè)計(jì)”與“嵌入式系統(tǒng)接口原理與應(yīng)用”,“嵌入式軟件設(shè)計(jì)與應(yīng)用”等課程都密切相關(guān),是學(xué)習(xí)嵌入式系統(tǒng)設(shè)計(jì)不可缺少的一部分。還有一部分同學(xué)認(rèn)為匯編語(yǔ)言已經(jīng)“過(guò)時(shí)”了,在今后的工作中不會(huì)用到,教師講授時(shí)可以通過(guò)一個(gè)嵌入式系統(tǒng)應(yīng)用的實(shí)例說(shuō)明匯編語(yǔ)言程序設(shè)計(jì)在系統(tǒng)引導(dǎo)程序,接口驅(qū)動(dòng)程序中的重要作用,以及具有高級(jí)語(yǔ)言無(wú)法比擬的優(yōu)勢(shì)。
3 采用比較教學(xué)法
所謂比較教學(xué)法是指將陌生的東西與熟悉的東西做比較,找出相同和不同的地方,然后進(jìn)行差異化學(xué)習(xí)[3]。比如可以將ARM指令系統(tǒng)與我們熟悉的x86指令類(lèi)比,來(lái)提速學(xué)生的理解記憶過(guò)程。ARM指令與x86指令編程操作有明顯的共性,甚至很多指令助記符都是相同的。如MOV,ADD,SUB等,學(xué)生很容易接受。所以要特別突出ARM指令體系的不同之處,比如:ARM絕大部分指令可以根據(jù)狀態(tài)寄存器的狀態(tài)決定是否執(zhí)行;ARM指令集中設(shè)置專(zhuān)門(mén)的Load/Store指令用于存儲(chǔ)器的訪問(wèn);ARM不設(shè)專(zhuān)門(mén)的移位指令,各指令中均直接可進(jìn)行移位操作等等,而這些不同之處更突出體現(xiàn)了ARM處理器的RISC特性,所以學(xué)生很容易記憶。同樣在硬件上也可以做類(lèi)比,比如ARM與x86處理器的中斷處理過(guò)程的區(qū)別。
還可以將匯編語(yǔ)言與學(xué)生比較熟悉的高級(jí)語(yǔ)言做類(lèi)比。匯編語(yǔ)言也好,高級(jí)語(yǔ)言也好,都只不過(guò)是程序設(shè)計(jì)的工具,因此對(duì)于程序的基本功能和程序設(shè)計(jì)的基本問(wèn)題都有相通的實(shí)現(xiàn)機(jī)制,特別是在程序設(shè)計(jì)的基本思想上。但是匯編語(yǔ)言和高級(jí)語(yǔ)言畢竟是不同級(jí)別的語(yǔ)言類(lèi)別,高級(jí)語(yǔ)言語(yǔ)句功能更強(qiáng),編程時(shí)更靈活方便,而且即便是同樣的問(wèn)題,如數(shù)據(jù)安排、數(shù)據(jù)處理、程序流程控制、子程序調(diào)用等,實(shí)現(xiàn)起來(lái)也有不同的方法。比如高級(jí)語(yǔ)言子程序調(diào)用時(shí)需要同時(shí)提供參數(shù),一般格式是:函數(shù)名(參數(shù));而在匯編語(yǔ)言中,子程序在定義時(shí)不需要有關(guān)參數(shù)的說(shuō)明,在調(diào)用時(shí)也無(wú)需同時(shí)提供參數(shù),子程序的調(diào)用格式為:BL子程序名。也就是說(shuō),高級(jí)語(yǔ)言中函數(shù)的參數(shù)傳遞是顯式進(jìn)行的,而匯編語(yǔ)言中的參數(shù)傳遞是隱式的。在匯編語(yǔ)言中參數(shù)傳遞可以利用寄存器實(shí)現(xiàn),也可以利用存儲(chǔ)單元實(shí)現(xiàn),還可以用堆棧實(shí)現(xiàn)。在實(shí)際應(yīng)用中通常綜合以上方法來(lái)達(dá)到最佳效果。
4 采用多媒體與板書(shū)相結(jié)合的教學(xué)手段
充分采用多媒體的手段來(lái)授課是必要的,在匯編語(yǔ)言的教學(xué)中,大量采用多媒體課件,對(duì)于一些抽象難懂的知識(shí),借助于圖表、動(dòng)畫(huà)等進(jìn)行講解,可以給學(xué)生一個(gè)感性、直觀的認(rèn)識(shí),使大家集中注意力,加深對(duì)內(nèi)容的理解。比如在講解尋址方式時(shí),通過(guò)工作流程動(dòng)畫(huà)的演示,學(xué)生很容易理解各種尋址方式的不同之處。但是教師并不能完全依賴(lài)于多媒體手段,如果把所講的程序直接做到課件中,講解時(shí)會(huì)出現(xiàn)朗讀課件的情況,與學(xué)生的交互不足,影響授課效果。因此最好將多媒體與板書(shū)相結(jié)合,在多媒體課件中展示程序的流程圖,而將程序以板書(shū)形式展現(xiàn)給學(xué)生,寫(xiě)板書(shū)時(shí)可以與學(xué)生充分交流,讓他們有足夠的時(shí)間來(lái)理解編程的思路和過(guò)程,同時(shí)也大大活躍了課堂氣氛。
5 實(shí)驗(yàn)教學(xué)注重實(shí)用性
匯編語(yǔ)言是一門(mén)實(shí)踐性很強(qiáng)的語(yǔ)言,實(shí)驗(yàn)環(huán)節(jié)在整個(gè)教學(xué)活動(dòng)中占據(jù)了舉足輕重的地位,是提高學(xué)生動(dòng)手能力的重要環(huán)節(jié)。因此,教師一方面要耐心講解讓學(xué)生熟悉匯編語(yǔ)言從匯編、鏈接到調(diào)試執(zhí)行的整個(gè)過(guò)程,另一方面要讓學(xué)生多進(jìn)行上機(jī)實(shí)踐。還可以要求學(xué)生將一些c語(yǔ)言的程序段的功能通過(guò)匯編語(yǔ)言實(shí)現(xiàn)。通過(guò)集成開(kāi)發(fā)環(huán)境的幫助,學(xué)生可以更好的掌握兩種語(yǔ)言編程的異同點(diǎn),達(dá)到更好的學(xué)習(xí)效果。對(duì)于一些復(fù)雜的題目,可以讓學(xué)生課外分組來(lái)進(jìn)行設(shè)計(jì),題目的類(lèi)型可以是研討型的讓學(xué)生從更多的角度去思考編寫(xiě)程序。
6 結(jié)束語(yǔ)
計(jì)算機(jī)技術(shù)的發(fā)展日新月異,計(jì)算機(jī)教育也應(yīng)該與時(shí)俱進(jìn),跟上計(jì)算機(jī)發(fā)展的步伐。匯編語(yǔ)言是銜接計(jì)算機(jī)軟硬件的重要基礎(chǔ)課程,其重要性始終不可替代,為了讓學(xué)生學(xué)好這門(mén)課,作為一名教師,應(yīng)該從課程的內(nèi)容,授課方法,教學(xué)手段等多方面積極進(jìn)行改革,從而提高教學(xué)質(zhì)量,充分發(fā)揮學(xué)生的學(xué)習(xí)積極性。
參考文獻(xiàn):
[1]文全剛.匯編語(yǔ)言程序設(shè)計(jì)-基于ARM體系結(jié)構(gòu)(第2版)[M].北京:北京航空航天大學(xué)出版社,2010.
[2]陳燕俐,許建.“匯編語(yǔ)言程序設(shè)計(jì)”課程教學(xué)改革探索[J].中國(guó)電力教育,2012.
[3]熊小兵.“匯編語(yǔ)言程序設(shè)計(jì)”的比較教學(xué)法[J].計(jì)算機(jī)教育,2010.
作者簡(jiǎn)介:紀(jì)緒(1976-),男,講師,教師,研究生,研究方向:嵌入式系統(tǒng)。
作者單位:吉林大學(xué)珠海學(xué)院 計(jì)算機(jī)系,廣東珠海 519041