日本免费精品视频,男人的天堂在线免费视频,成人久久久精品乱码一区二区三区,高清成人爽a毛片免费网站

在線客服

匯編語言程序設計實用13篇

引論:我們為您整理了13篇匯編語言程序設計范文,供您借鑒以豐富您的創作。它們是您寫作時的寶貴資源,期望它們能夠激發您的創作靈感,讓您的文章更具深度。

篇1

匯編語言程序設計;研究性教學模式;創新人才培養

1《匯編語言程序設計》課程現狀及存在問題

《匯編語言程序設計》是計算機專業的專業基礎課,是一門實踐性很強的課程。以往老師講授這門課程時,主要以“老師講、學生聽”的形式進行的,這樣不助于學生理解指令的執行過程,往往導致學生在上機調試時無從下手,更談不上綜合程序的設計。這種僵化的教與學的模式必須進行改革,才能達到創新人才培養的目標。

2教學改革思路:

如果要提高教學質量,達到預期的教學效果,關鍵要改革教師的教學方法和學生的學習方式,即教師從傳統的講授灌入式向探究式轉變,學生從傳統的被動接受向主動接受、探究發現和研究性學習轉變,達到培養學生主動發現問題、分析問題、創造性地解決問題的能力[1]。這就需要重新定位教師主導地位和學生主體地位的關系,采用以"學生為主體,教師為主導"的新教學理念。結合匯編語言程序設計課程的特點,緊緊圍繞“深入理解機器工作的基本原理、培養底層編程意識和思想”和提高學生綜合運用所學知識的能力兩個核心目標,通過對教學方法及考核方式等進行改革,從而提高教學質量。

3教學方法及教學手段的改革

1.啟發式教學:課程的講授過程中,采用啟發式教學方法,有意識地引導學生思考,將計算機的硬件工作過程深入課中,使得學生對語言的執行過程有更深入的理解。例如,在講解存儲器的分段時,可以將CPU與存儲器的數據訪問講解一下,這樣學生就能理解為什么要進行分段處理。2.項目驅動教學:匯編語言程序設計是一門實踐性很強的課程,老師根據課程目標,設置3個難度適中的綜合訓練項目,貫穿整個教學過程中。學生在課余時間,通過檢索資料、團隊合作、綜合分析,尋找解決問題的方案,最終提交程序代碼及方案報告。“項目”教學是以學生為中心,老師為組織者和引導者,在項目的實現過程中,不但使學生加深對知識的系統理解,而且也了解了與知識相關的前沿熱點問題,從而培養大學生自主學習能力、探究問題能力、協作能力、適應和創新能力等。3.隨堂實踐:學生上課可以自帶筆記本,在知識點的講解過程中,老師要充分利用多媒體教學環境中的計算機系統,對于程序實例可課堂調試演示,在機器上可隨堂編寫小程序現場運行,和學生一起進行調試的過程中,打破匯編語言的神秘感,消除學生對匯編語言難以掌握的恐懼心理,使同學們更直觀、更快理解和掌握相關知識,激發學生對新知識和新技術的求知欲,提高教學質量。

4教學組織過程

課堂的前幾分鐘進行提問,掌握學生的知識點掌握情況,并督促學生搞好復習與預習;在知識擴展環節中,老師布置知識擴展點及要求,學生自主查閱資料并整理資料,增強學生查閱、整理和總結資料的能力,進而鍛煉學生自主學習的能力;訓練項目的實施以項目組的形式進行,即5~6名學生為1個項目組,并選其中一個學生擔任組長,組長組織成員開展討論和交流,但每個學生都獨立完成項目的設計、實驗和項目報告;項目的實施主要采取“課外為主、課內為輔”的方式。即學生領取任務后,通過課余時間進行資料查閱、討論、答疑、編程和調試,以及完成項目報告書等。每個項目布置時,老師要進行概要的講解,讓學生了解項目的整體思路及接下來應該怎樣解決,然后多安排幾次答疑輔導時間,學生帶著自己的疑問與老師交流,師生一起找到解決問題的辦法,這也提高了項目的完成質量;答辯時要求以組為單位,在規定的時間范圍內,做完的組可以找老師答辯,答辯時學生帶著電腦可以進行現場調試,根據功能實現及答辯情況給予答辯分,對平時負責本組程序講解的同學答辯成績有加分;由組長組織,進行討論,鍛煉學生的表達能力,增加學生的知識儲備;每周安排一次答疑,這樣可以及時了解學生知識點的掌握情況,有助于老師課堂內容的安排,同時也有助于師生交流,提高教學質量。

5考核方式

以課程結束時的考試作為評定學生的依據是很不科學的,要改變傳統的學生學業評價中“一考定全局”終結式評價模式[2]。學生的評價應該是能夠不斷的指導學生、鼓勵學生、完善其學習方法,增加學生的應用能力,進而實現人才的培養目標。在課程考核中,我們采取以下的考核辦法:期末總成績由考試成績(50分)、綜合訓練成績(40分)、平時成績(10分)三部分組成??偝煽冎屑又亓藢W生對所學知識綜合應用能力的比重,同時也注重對學生學習過程的評價。

6結束語

本文將研究性教學模式引入《匯編語言程序設計》課程教學中,打破了傳統的教學理念,經過兩輪教學實踐,教學效果較以往有明顯的提高。

參考文獻:

篇2

2實驗教學在《匯編語言程序設計》教學中的作用在培養人的科學思維、創新意識,掌握科學方法、提高綜合實踐能力方面,實踐環節有著重要的作用,是課堂理論教學無法替代的。實驗課是進行實踐教學的重要學習場地,學生通過對實驗內容的思考,對課堂上的理論知識進行了鞏固;實驗過程中的操作,可以發現理論教學的不足;實驗過后的心得分析,為以后解決實際問題打下堅實基礎。實驗還可以將算法的實現和計算機的操作過程相結合,使學生體會到算法的邏輯含義是通過計算機的實際執行過程實現的[2]。

匯編語言與硬件關系密切,通過實驗課,學生可以更好地理解cpu、寄存器、存儲器、接口及外部設備的工作原理?!秴R編語言程序設計》課程的實驗是培養學生的動手能力、增強學生的學習興趣、提高學生閱讀、編輯和調試程序能力的關鍵環節。

3實驗教學中存在的問題

3.1教學內容安排方面

計算機語言課程的學習需要理論聯系實踐,實驗課是學好計算機語言的必備條件,匯編語言的學習亦是如此,實驗課程開始越早對學生的學習越有利?!秴R編語言程序設計》這門課程的教材安排順序一般是:基礎知識、計算機系統的組織、匯編要素、基本指令、程序設計、輸入/輸出、系統調用、高級匯編語言技術。實驗教學往往是配合理論教學進行,通常在理論課程第5~7周后,實驗課才得以開設。這樣的教學安排效果并不理想,在實驗課程開設的前幾周不利于學生很好地掌握學習內容,從而對匯編語言產生厭學情緒。

高等院校普遍存在對專業課程的課時進行壓縮的現象,使得《匯編語言程序設計》的理論課時和實驗課時都有不同程度的壓縮,實驗課時的壓縮相對于理論課時更加嚴重,導致實驗內容的安排不能覆蓋該課程的重點,而且重點實驗內容也相對淺顯,無法進行深入研究。

另外,有些教師圍繞課本基礎結構部分的知識講授,沒有結合實際應用進行擴展,對實驗內容的設計也比較淺顯,無法激起學生的興趣。這些行為都導致了學生對匯編語言的學習興趣降低甚至放棄。

3.2學生態度不夠端正

很多學生認為實驗課不重要,實驗做得好否對最終的成績判斷沒有關聯。目前多數院校的學生學習成績判定, 以期末考試成績為主,這就使得很多學生重理論、輕實驗。另外,匯編語言不像其它高級語言那樣應用廣泛,學生認為其對就業幫助不大,從思想上輕視匯編語言,對《匯編語言程序設計》的實驗課程更是不愿付出精力,甚至出現拷貝代碼的現象。

3.3考核體系不明確

匯編語言的實驗教學環節沒有受到足夠的重視,導致沒有明確的評價體系。在進行實驗課時,有些教師只是布置了相關的實驗內容,實驗過程沒有進行必要的監督和輔導,導致學生對實驗教學態度怠慢,出現學生在實驗課上玩游戲和課下實驗報告抄襲的現象。

4提高匯編語言實驗教學效果的措施

4.1合理設置實驗內容

實驗課的內容按照由淺入深、循序漸進的方式進行,以啟發思維為主。對設計型、綜合型實驗只要能達到實驗目的,其實驗過程和步驟可以多樣,通過實驗課復習理論知識,引出欲

講解的新內容。針對學期初不安排實驗的問題,可以嘗試開展“先實驗后理論”的教學,在實驗中理解基礎理論,加大實驗課的比例并且及早實行開展實驗教學,在整個教學過程中實行以“學生動手為主,教師講解為輔”的教學模式[3]。

4.2引入新的實驗教學模式,培養學生學習興趣

實驗教學中要充分調動學生的積極性,照顧不同層次的學生。匯編語言指令繁瑣,初始使用時比較抽象,學生對待實驗內容往往無從下手,所以任課教師應該先對實驗內容進行講解。起初的實驗內容,教師應該進行詳細的演示,可以先引導學生“臨摹”,避免學生出現無從下手、喪失信心等問題。后面的實驗內容可以進行講解并提示實驗方法,但不要求每個學生都按照此方法進行實驗,鼓勵學生創新,并在考核中給予一定的獎勵。每次實驗內容,任課教師都要進行總結,以解決學生在實驗過程中的“通病”。

《匯編語言程序設計》的實驗一般設置16~24學時,存在實驗學時偏少的問題。為了盡可能提高實驗效率,教師可以提前給學生布置實驗內容,給學生留出時間準備。如果在實驗課上臨時給出實驗內容,大多數學生無法按時完成實驗目標,會打擊學生學習的積極性。對實驗內容進行準備后再上機操作,大多數學生就可以在規定的時間內完成實驗。學生在上機的過程中獲得了成就感,樹立了信心,就會產生學習興趣,并主動在課下花時間鉆研有關課程實驗的內容。

為了培養學生的團隊合作精神,也可以設計一些綜合應用實驗,讓學生分組完成。每組選出一位組長,負責組織學生課下進行實驗內容的預習、實驗方案的制定和課上組員提出問題的解決方案等工作。教師在進行實驗考核時,要對每個組的完成情況進行總結,對于完成較好的組,給予成員一定的加分,以鼓勵學生注重團隊合作精神,培養學生的學習興趣。

4.3建立嚴格的考核體系

《匯編語言程序設計》課程一般需要16~18個教學周才能完成教學任務,在這段時間內,很少有學生能對其一直保持較高的學習熱情,大部分學生都是以成績驅動自己的學習,所以需要一套嚴謹的實驗考核體系,公平公正地評價學生的實驗過程[4]。筆者學校的實驗課程成績由學生出勤、預習、實驗操作過程和實驗報告4部分組成,涵蓋了學生實驗上機的全過程。各部分的比例按10%、20%、40%、30%的權重計算實驗總成績。除了出勤情況外,預習、實驗操作過程和實驗報告這3部分按等級評定,每個等級對應的分數為: a(90~100)、b(80~89)、c(70~79)、d(60~69)、e(50);對于前4個等級,教師可根據學生完成的情況給出該等級的加減等級。以a等級為例,a+對應100分,a對應95分,a-對應90分,這樣每個等級都有對應的分數,可以做到客觀地評價學生的實驗過程。

5結語

本文根據筆者的教學實踐,分析了《匯編語言程序設計》課程的教學現狀,指出了實驗教學在《匯編語言程序設計》教學過程中的重要性,并對匯編語言的實驗教學進行了深入的分析和思考。根據實際情況提出了幾點可行的措施,即合理安排實驗內容,引入新的實驗教學模式和建立嚴格的考核體系,從而達到發掘學生潛能、提高實踐動手能力、增強學習匯編語言興趣等目的?!秴R編語言程序設計》課程的實驗教學還需要廣大教師積極探索,引入多種符合實際的教學方法,使匯編語言對計算機專業課程后續的學習發揮應有的作用。

參考文獻參考文獻:

\[1\]劉正紅.對匯編語言實驗教學的幾點看法[j].信息與電腦,2012(6):198199.

[2]木林.《匯編語言程序設計》實驗教學的探討[j].呼倫貝爾學院學報,2012 (4):9295.

[3]張學,陸慶.匯編語言實驗教學的思考[j].教學研究,2009(15):8182.

[4]侯宏霞.提高匯編語言課程實驗教學質量的幾點思考[j].內蒙古農業大學學報:社會科學版,2011(13):173174.

篇3

一、匯編語言程序設計課程的特點

匯編語言比機器語言有了很大的進步,但仍是面向機器的一個非常低級的語言,非常冗長單調、易出BUG并且調試困難、代碼不易維護、兼容性不好、與硬件關系非常緊密,所以匯編語言的通用性較差。但匯編語言除了保持機器語言的編程質量高、執行速度快、占用內存少的優點外,還具有易記憶、易理解、書寫調試較方便等優點。

二、教學中存在的問題

1.傳統教學內容的缺點

傳統的匯編語言教學一般按照教材的編寫順序,教師先講CPU的功能結構知識,然后講存儲器與尋址方式知識,最后講匯編語言指令系統和程序編寫。在講CPU的功能結構的時候,因缺少實踐,大多數學生感到所學知識非常抽象,難以理解,逐漸感到匯編語言課程枯燥無味,對匯編語言學習失去興趣,嚴重影響了后續章節的學習。

2.實驗設備配置不合理

匯編語言課程作為一門實踐性很強的課程,必須進行大量的實踐,但這恰恰是大多中等職業學校所缺乏的環節,主要有以下原因。

(1)實驗設備昂貴,這對于資金并不充裕的中等職業學校來說,很難為了一門課程而購買足夠數量的實驗設備。實驗設備的缺乏,嚴重影響了學生的實驗教學質量。

(2)學校計算機室的計算機不敢讓學生進行實驗練習,因為匯編語言是針對硬件編寫程序的,學生在實驗的時候如果出一點差錯就有可能對計算機設備造成永久性的破壞。這就使得學生無法完全理解匯編語言程序設計與硬件的聯系,達不到匯編語言實驗目的,無法驗證學生編寫程序的正確性。

3.“雙師型”教師數量不足

在中等職業學校,由于多方面的原因,學校對于既懂理論,又能實踐的雙師型教師十分缺乏。很多匯編語言教師,只注重理論教學,忽視了教師自身實踐能力的提高,只會按照教材講課,不會編寫匯編語言程序的現象非常常見。只側重匯編語言理論教學,必然嚴重阻礙匯編語言實踐教學質量的提高,無法滿足當今社會對匯編語言程序設計人才的培養要求。

三、教學改革的探索

1.打亂常規教學順序,激發學生學習興趣

初次教授匯編語言課程,教師先不要講解教材上關于CPU的功能結構和存儲器及尋址方式部分內容,而應采取與實際應用相結合的一體化教學方式。教師可以先讓學生看一段機器語言設計的小程序。給學生講講早期的程序員是怎樣使用機器語言進行編程的,接下來把上段機器碼用匯編指令寫出來給大家看,讓同學們感覺到使用匯編語言程序設計比機器語言設計既簡單又容易記憶,這就為激發學生的學習興趣奠定了第一步的工作基礎。在后續的課程中,教師可以與教材相結合,在講解程序例題的過程中講解用到的CPU的功能結構和存儲器及尋址方式部分知識,讓學生逐個理解和掌握這些抽象的知識,不至于一次把學生講蒙,也不會因此影響學生學習這門課的興趣。

2.注重培養“雙師型”教師

篇4

匯編語言也好,高級語言也好,它們都只不過是程序設計的工具,因此對于程序的基本功能和程序設計的基本問題,它們都有相應的實現機制,而且在很多方面都是相通的,尤其是在程序設計的基本思想方法上。但匯編語言和高級語言畢竟是兩種不同的語言類別。從源程序的基本單位――語句的層面看,高級語言語句的功能遠比匯編語言語句即各種指令和偽指令的功能要強大。此外即便是同樣的問題,如數據安排、數據處理、流程控制、子程序結構等,它們的實現機制也不一樣。

效率最高的教學方法首推比較教學法(或叫類比教學法),也就是將新的陌生的東西和舊的熟悉的東西做比較,找出它們之間相同的地方和不同的地方,然后進行差異化的學習,重在存同求異,這樣就會事半功倍。

因此,筆者在多年從事“匯編語言程序設計”的教學中,特別注重以學生在學習高級語言程序設計課程時所獲得的知識和體驗為基礎,將匯編語言和高級語言進行比較教學。

本文就是這一教學方法的經驗總結。

1數據的組織安排

程序是用來加工處理數據的,因此程序設計工作離不開數據的組織安排。數據的組織安排就是指為程序加工處理的數據安排合適的空間并且組織好,以提高對數據加工處理的效率。從應用層面看,數據的組織安排通常包括3個方面:

(1)安排在哪?即空間位置問題。

(2)安排多大空間?即數據長度問題。

(3)存放什么樣的數據?即數據類型問題。

在數據空間的組織安排方面,匯編語言和高級語言的一個重要差別是:高級語言提供的是直接面向應用的數據類型,如C語言中的基本類型――整型(int)、浮點型(float)、字符型(char),而整型又有長(long)、短(short)之分,浮點型又有單精度(single)和雙精度(double)之分,此外還有有符號(signed)和無符號(unsigned)之分等。高級語言的數據類型是面向應用的,因此它們有兩方面的含義:類型特點和長度大小,這就解決了上述3個問題中的后兩個問題[1]。

在C語言中,數據除了有類型這個概念之外,還有類別之分,即存儲類別問題,共有4種:static、auto、register和extern。從嚴格意義上講,其中和數據空間的組織安排有關的只是前3種:static和auto對應的是內存空間,而register對應的則是寄存器空間,這又解決了上述3個問題中的第一個問題[1]。

與高級語言不同的是,匯編語言的數據類型是面向機器的,如MASM中的基本類型――DB、DW、DD、DQ、DT等,它們只有長度大小的含義,而且都是對應內存空間的,因此用它們定義的變量都屬于內存變量。

在匯編語言中,由于可以直接引用各個寄存器,而且各個寄存器的空間大小都是確定的,因此這些寄存器實際上就相當于C語言中的寄存器變量。

總之,在匯編語言中,數據一般只有空間大小和位置之分,而不管這個空間中存放什么樣的數據,即無類型之分。

因此,在用匯編語言設計程序時,對程序中的數據有一個面向應用的自我理解問題!這是在教學時應特別予以關注的!

2數據的加工處理

在數據的輸入輸出方面,匯編語言和高級語言也有重要差別。

以面向標準輸入輸出設備的數據輸入輸出為例,高級語言提供的也是直接面向應用的相關語句、函數和過程,如C語言中的fprintf、printf、sprintf、vprintf、vfprintf、vsprintf、fscanf、scanf、sscanf、fgetc、fputc、getc、putc、getchar、putchar、fgets、fputs、pus、gets等,這些函數基本上滿足了面向應用的各種類型數據的輸入輸出[1]。

匯編語言提供的則基本上是面向字符的中斷調用,即通過調用相關的中斷服務程序來實現數據的輸入輸出,如MASM中的常用的DOS提供的21H類中斷服務程序的1、2、8、9、10號功能等。

總之,高級語言提供的一般是直接面向應用的輸入輸出機制,而匯編語言提供的則一般是面向系統的輸入輸出機制。因此在匯編語言程序設計的教學中,如何利用面向系統的輸入輸出機制通過編程實現面向應用的輸入輸出功能是我們的又一個重點。

在數據的內部加工處理方面,高級語言和匯編語言都提供一序列的運算符。

在C語言中,這些運算符包括為數據傳送提供的賦值運算符“=”和為數據運算提供的算術運算符“+、-、*、/、%、++、--”、關系運算符“>、>=、

在MASM中,這些運算符包括算術運算符:“+、-、*、/、MOD”,邏輯運算符:“AND、OR、NOT、XOR”,關系運算符:“EQ、NE、LT、GT、LE、GE”,移位運算符:SHR和SHL等[2]。

值得注意的是,除了形式上的差別外,高級語言的運算符和匯編語言的運算符在功能上也是有差別的:高級語言的運算符往往可以用在包括常量和變量的各種數據之間,而匯編語言的運算符則往往只能用在常量之間,對變量的加工處理則是依靠相應的指令來實現的。

3流程控制問題

為了實現流程控制,高級語言都提供有兩類基本語句:分支控制語句和循環控制語句,如C語言和PASCAL語言中的if語句、switch語句、for語句、while語句、do-while語句、case語句、repeat語句以及比較特別的goto語句等[1,3]。

匯編語言則提供有相應的流程控制類指令,如MASM中的無條件轉移指令(JMP)、條件轉移指令(JA、JB、JAE、JBE、JNZ、JZ、JG、JL、JGE、JLE、JO、JNO、JS、JNS、JC、JNC等)、循環控制指令(LOOP、LOOPZ、LOOPNZ)等[2,4-6]。

在功能上,匯編語言的轉移類指令既可以用于分支控制,也可以用于循環控制,而循環類指令則自然主要用于循環控制。它們的實現機制在高級語言中也有體現,如C語言中的goto語句。

從功能上看,C語言中的goto語句主要有兩種用法:

(1)goto標號;

(2)if條件goto標號。

前一種用法實現的正好是匯編語言中無條件轉移指令的功能,而后一種用法實現的則正好是匯編語言中條件轉移指令和循環控制指令的功能。

在用匯編語言寫分支控制程序時尤其要注意的是,由于只能一個分支一個分支的縱向展開,因此除最后書寫的分支外,前面的分支結尾處一般都應該有一條無條件轉移指令以跳過后面的分支,避免執行不該執行的分支。

例如:輸入一個字符,判斷其是否為數字‘9’,若是,則輸出字符‘Y’;否則,輸出字符‘N’。這是一個簡單的二分支問題,其匯編語言程序段如下:

MOV AH,1

INT 21H

CMP AL,‘9’

JZ YES ;開始分支

MOV DL,‘N’ ;第一個分支

JMP EXIT ;避免執行第二個分支

YES:MOV DL,‘Y’ ;第二個分支

EXIT:MOV AH,2 ;匯合點

INT 21H

匯編語言除了提供上述轉移控制類指令和循環控制類指令以實現分支程序設計和循環程序設計外,還提供有子程序和中斷服務程序的調用(CALL、INT)指令和返回(RET、IRET)指令以及比較特別的重復前綴指令(REP、REPZ、REPNZ)等。

匯編語言的子程序概念和高級語言中的子程序概念、函數概念以及過程概念是對應的,而中斷服務程序概念則一般是匯編語言獨有的。

如果僅從程序執行機制上看,子程序、函數、過程、中斷服務程序的地位是一樣的,只不過是在不同的語言環境中采用了不同的稱呼而已。

主程序和子程序、函數、過程、中斷服務程序之間的流程控制都是通過調用與返回實現的,差別是:在高級語言中,主程序和子程序、函數、過程之間的流程控制是通過直接引用子程序、函數或過程的名字(加上適當的參數)來實現的[1,3];而在匯編語言中,主程序和子程序、中斷服務程序之間的流程控制是通過前面提到的專門的控制指令(CALL、RET、INT、IRET)來實現的。

4子程序問題

前已述及,匯編語言的子程序結構相當于高級語言中的子程序、函數和過程。

在采用子程序結構時,一個重要的問題就是參數傳遞。主程序在通過調用子程序為自己解決某些問題時,通常需要為子程序提供一些相關的數據,子程序在內部對這些數據做相應的加工處理后應該將處理結果返回給主程序,這就是所謂的參數傳遞問題。主程序提供給子程序的數據通常叫做入口參數,而子程序返回給主程序的數據則通常叫做出口參數。

匯編語言子程序的參數傳遞和高級語言中子程序、函數或過程的參數傳遞機制從本質上看是一致的。

需要做參數傳遞時,通常有兩種選擇:一種方法是直接傳遞所需要的數據,另一種方法是傳遞所需數據的位置信息即內存地址。第一種方法即通常所說的值傳遞,第二種方法即通常所說的地址傳遞。需要注意的是,傳地址的目的也是為了傳數據。

從表象即實現形式上看,匯編語言子程序的參數傳遞和高級語言子程序的參數傳遞卻有著不小的差別。

在高級語言中,函數在定義時往往就有參數說明,如C語言的函數定義格式如下:

類型 函數名(形式參數表)

{

函數體

}

高級語言的函數在調用時需要同時提供參數,一般格式是:函數名(實際參數表)。而在匯編語言中,子程序在定義時不需要有關參數的說明,在調用時自然也就無需同時提供參數。

如在MASM中,子程序的定義格式為:

子程序名 PROC

子程序體

子程序名 ENDP

子程序的調用格式則為:CALL子程序名

由此可見,高級語言中函數的參數傳遞是顯式進行的,較之匯編語言子程序中隱式進行的的參數傳遞問題要易于實現和理解接受一些。因此,匯編語言中的子程序的參數傳遞問題就是教學中的一個重點內容。

在匯編語言中,為了實現子程序的參數傳遞,不管是采用值傳遞還是采用地址傳遞,都需要由程序設計者事先安排好一個第三方空間。值傳遞時將所需要的數據本身放在這個事先安排好的空間中,而地址傳遞時則將存放所需要的數據位置信息即內存地址放在這個事先安排好的空間里。

在安排用于參數傳遞的第三方空間時,既可以安排寄存器,也可以安排內存單元,還可以安排堆棧。因此具體的參數傳遞方式靈活多樣,而且各有各的優勢,在實際應用中通常綜合以上各種做法以求達到最佳效果[2,4-6]。

5結語

限于篇幅,以上僅就程序設計的幾個主要方面作了比較論述,而且主要是從實現機制的角度來談,因此細節的東西基本上都省卻了。事實上,在其他方面,匯編語言和高級語言也具有一定的可比性。

實踐證明,通過比較教學,一方面可以利用學生已有的知識和體驗幫助他們更好地學習匯編語言的相關知識,即把他們在高級語言程序設計中獲得的有關程序設計的基本思想方法和規律遷移到匯編語言程序設計的學習中來,進行差異化的學習,極大地提高學習效率;另一方面,可以讓同學們通過比較,把以前在學習高級語言程序設計時遺留的一些問題甚至沒有意識到的問題搞清楚,起到融會貫通、觸類旁通的作用。

總之,通過比較教學,不僅可以提高學生的學習效果和效率,而且新舊知識可以相得益彰。

參考文獻:

[1] 譚浩強. C程序設計[M]. 3版. 北京:清華大學出版社,2005.

[2] 曹加恒,蘇光奎,許先斌,等. 新一代匯編語言程序設計[M]. 北京:高等教育出版社,2003.

[3] 鄭啟華. PASCAL程序設計[M]. 2版. 北京:清華大學出版社,1996.

[4] (美)歐文. Intel匯編語言程序設計[M]. 5版. 溫玉杰,梅廣宇,羅云彬,譯. 北京:電子工業出版社,2007.

[5] 沈美明,沈冬嬋. IBM-PC匯編語言程序設計[M]. 2版. 北京:清華大學出版社,2001.

[6] 錢曉捷. 新版匯編語言程序設計[M]. 北京:電子工業出版社,2006.

The Comparative Teaching Method of “Assemly Language”

XIONG Xiao-bing

篇5

匯編語言是我們理解整個計算機系統的最佳起點。人們往往認為匯編語言的應用范圍很小,因而忽視了它的重要性。其實匯編語言對學習計算機科學與技術的人是非常重要的。所有程序,不論用何種語言進行編制,只有轉成機器指令,運用機器的邏輯功能,功能才得以實現。

匯編語言直接a描述機器指令,比機器指令更容易記憶和理解。通過學習和使用匯編語言,我們才能夠感知、體會、理解機器的邏輯功能,這樣不僅可以為理解各種軟件系統的原理打下技術理論基礎,而且可以為掌握硬件系統的原理打下實踐應用基礎。

2.教學中存在的問題

當前高級語言的發展非常迅速,各種開發工具層出不窮,其功能也越來越強大。高級語言進行程序設計的可操作性越來越強,許多非計算機專業人員在不了解計算機的結構、沒掌握計算機相關的專業理論和各種計算機語言具體編程等情況下,同樣能很好地使用高級語言。所以,高級語言的發展弱化了匯編語言的地位,這使部分高職學生覺得匯編語言已不重要了,學不好沒有多大的關系。所以,思想認識上的不重視,導致了部分學生學不好這門課程。

《匯編語言程序設計》的學習需要一定的英語知識。高職學生的英語基礎普遍差,據有關職業教育方面的統計資料顯示:在高職高專院校中60%的學生英語基礎差;30%的學生有一定的基礎,但對英語學習不感興趣;10%的學生英語基礎較好。實際上,普通高職高專院校學生英語的基礎情況比統計的更嚴峻。這就為他們學習這一課程帶來了一定的障礙。

針對這一系列的情況,筆者根據教學經驗,總結了在高職院校教《匯編語言程序設計》的一些心得,希望對大家有所幫助。

3.注重課堂教學

3.1優化教學內容。

本課程涉及內容較多,教師應在講課之前先對課本內容進行優化。并不是課本上所羅列的內容都需要講,教師要有選擇性講解:對學生有用的而課本上講得不全面的要補充講解,而對學生用處不大的可以不講或一帶而過,爭取做到“少而精”。

3.2讓學生充分認識到該課程的重要性,提高學生的學習的興趣。

“興趣是最好的老師”,如何讓學生對本課程感興趣?筆者認為關鍵是把握好開學第一堂課。在學生剛接觸本課程時,教師不要急于介紹理論知識,而是要強調該課程的實際應用,通過介紹匯編語言的特點和匯編語言在一些典型系統開發中的具體應用來激發學生的學習興趣。

目前對單片機的靈活編程已經應用到各個領域,無論是尖端科技,如軍事、通信、能源、機器人、交通、IT,還是現代工業、農業,如儀器儀表、汽車電子系統、家用電器、玩具、個人信息終端等諸多領域,都離不開單片機。而單片機的編程里大部分都使用了匯編語言,匯編語言的易用和靈活的特性,使得匯編語言將繼續占有獨特的地位,其適用的領域要求執行效率高、反應快,如操作系統內核、工業控制、實時系統、家用電器的計算機控制功能等。在講述其重要性和應用領域時,教師應結合一些身邊的、具體的實例,如電梯升降的控制程序和廣場的大型噴泉的控制程序均是由匯編語言編寫的,學生的興趣會被這些實例極大地調動起來。

3.3注重實踐環節。

在計算機相關專業的教學領域,實驗教學是培養學生學習能力、實踐能力、思考能力、創新能力的重要環節和有效途徑。學生在學習匯編語言這門課程中產生的困難,來自于他們對所學知識缺乏必要的感性認識,沒有得到充分的實踐。

計算機在很多方面不同于其他學科,尤其是與硬件有密切關系的課程。由于匯編語言課程與硬件操作有著密切關系,因此實驗環節在整個教學活動中占據了舉足輕重的地位。匯編語言的實驗對培養學生的動手能力和學習興趣,提高學生閱讀、編輯和調試程序的能力,有著不可替代的重要作用。學生通過實驗能深入了解CPU、存儲器、接口及外部設備的工作特性,對數據在計算機中的表達和傳送產生感性認識,在實驗中學生能對匯編語言有更好的理解、掌握,從感性認識上升到理論認識。

4.改進教學方法

4.1對照教學法。

在講匯編語言時,教師可以和其它語言對照講解,比如C語言。C語言作為一門基礎和先驅課程,在此時起到了很好的借鑒作用,由于大部分學生對C語言掌握得較好,基于語言的相通性,在匯編語言的相關教學中教師若以C語言作為對照展開講解,將會收到很好的教學效果,也能增進各科之間的知識和方法上的聯系。下面筆者結合教學實踐,列舉一些應用對照教學法的實例。

MOV指令是8088指令系統中首要講解的一個指令,也是匯編程序設計中使用最頻繁的指令,教師應強調對操作數的要求。有幾點我們可以用C語言來對比解釋:

傳送過程。其傳送過程類似于C語言中的賦值,只是在這里是給寄存器或存儲單元賦值,其實C語言中的變量名本身就是一個符號地址,匯編程度的賦值最終應對應到存儲器的某些存儲單元。

兩操作數的類型匹配問題。該內容在C語言中已作了強調,匯編中類型匹配問題也是一個重點。與C語言類似,匯編語言操作數的位數要保持一致,只是在8088中常用的類型為字節和字。

強制類型轉換。C語言中用到了該知識,學生也已掌握,那么匯編語言中又如何實現呢?很自然地我們就可以引出“BYTE PTR”和“WORD PTR”這兩個操作符。

4.2互動式和啟發式教學。

高職學生的課堂氣氛一般比較活躍,他們非常喜歡教師引導、提問,喜歡回答問題。所以教師應利用這一特點在上課過程中設計一些有意義的提問,利用提問將要講的知識點引出來,避免平鋪直敘地講解知識點,這樣讓學生帶著問題來學習知識點,會起到事半功倍的作用。例如,在講解編程部分的循環結構時,筆者先舉了這樣一個例子:求1+2+3+……+100的和。學生立刻就說出結果為5050。筆者接著問:加到1000呢?這樣很多學生饒有興趣地聽講。可見,教師所選的題目要由淺入深,要能激發學生的學習興趣,要想辦法讓學生變被動學習為主動學習。

課堂練習也是互動式教學一個非常重要的方法。在講解完某一個例題后,教師可以出一道類似的習題讓學生在課上完成,請學生上講臺在黑板上寫出解題步驟并進行講解。例如剛學習了用循環的方法求1+2+3+……+100的和,教師可以讓學生練習一道2+4+6+……+100的和。這樣可以檢驗學生的掌握情況,找到學生理解錯誤的地方,從而對癥下藥。就學生理解錯誤的知識點再進行講解,這樣除了可以讓學生當堂能夠掌握所學的知識點,還能讓其做到舉一反三。

4.3實例教學法。

由于本課程是一門比較抽象的課程,因此教師在課堂講授中應該盡量用一些通俗易懂的例子進行教學。

例如在講解匯編中存儲器地址分段的概念時,為了便于學生理解,教師可以借助平時生活的居民樓,進行舉例。一個小區有多個居民樓,如一號樓、二號樓等,每個樓里有多個室,如101室、102室等。我們可將樓號比作段基值,每個樓里的房間比作偏移地址,很顯然一號樓的101和二號樓的101是不一樣的。這個例子可以使學生易于理解分段的概念。

再如在講解中斷的概念時有很多例子可舉。把教師上課比作CPU正在處理的事,門外有學生打報告,教師就暫停正在處理的事情讓學生進來,等學生進來后接著講課。這樣學生很容易就能掌握中斷的概念。

教師可以將難理解的知識點與日常生活中的小事相聯系,這樣既可以使學生學到扎實的理論知識,又不會使學生學得吃力。

5.充分發揮多媒體教學的作用

匯編語言指令多、變化多,相對其他可編程語言來說源程序長而復雜,一個簡單的問題解決至少要幾十行,多則上百行,教師講解例題時如果板書,就要花去大部分時間。如何解決這個問題呢?多媒體能夠提高教學效果,擴大教學范圍,延伸教師的教育功能。教師應在課前準備講解的程序,上課時直接操作計算機,一邊講解指令的格式及算法,一邊將指令使用前后的情況、程序的效果等通過投影儀展示給學生。計算機教學還可借助網上豐富的資源、圖文并茂的生動界面、多姿多彩的影像資料,這些可使教學具有感受性、新穎性、可組合性、可擴充性,使學生的思維更加具有發散性,更容易培養學生的創新思維。

6.結語

筆者對匯編語言課程的教學內容和教學方法進行了探討,這些教學方法促進了課程的建設與發展,為學生學好后續課程打下了一個良好的基礎。摸索一條適合高職學生需要的、有效的教學方法,使高職學生能更好地、更快地掌握匯編語言程序設計,培養學生的分析問題、解決問題和實際操作能力,我們在匯編語言課程教學中需要繼續探索研究的目標。

篇6

Teaching Reform and Practice in the Course of Assembly Language//Tao Xueli1, Guo Fengying2

Abstract To improve the teaching effectiveness of the assembly language programming course, and to make student to better understand and master the course contents, Base on years of teaching experience and teaching activities ,the author summarizes and discusses the teaching methods and means such as contrast teaching, drawing for simplifying difficulties and creating situation used in the teaching.

Key words assembly language; contrast teaching; blackboard writing drawing; creating situation

Author’s address

1 College of Computer and Information Technology, Henna Normal University, Xinxiang, Henan, China 453007

2 Department of Computer Information Center, Beijing University of Chinese Medicine, Beijing, China 100029

匯編語言程序設計是高校計算機專業的專業基礎課程之一,它是計算機組成原理、計算體系結構等計算機硬件核心系列課程的必要先修課。匯編語言指令可以直接有效地控制計算機硬件,產生高效的代碼,在很多情況下是高級語言無可替代的。但是匯編語言指令較多,編程和調試過程復雜,實用性和可見性差,導致學生沒有興趣,因而教學效果不理想。如何改善教學效果,提高教學質量,是每一位相關專業任課教師應該研究的問題。筆者根據多年來從事匯編語言程序設計課程教學的實踐,談一下自己的經驗和體會。

1 采用合適的教學方法

教學方法是為完成教學任務、實現教學目標服務的,合理的教學方法可以使教學的基本要素在教學活動中充分發揮各自作用和功能,從而達到預期的教學目標和教學效果。

1.1 對比教學法[1]

匯編語言程序設計一般開設在大學二年級,在學習了一門高級語言(如C語言)程序設計課程之后。因此,在教學過程中,可以充分運用對比教學法,將匯編語言與高級語言相通的知識點進行對比,利用學生熟悉的知識,幫助學生理解新的知識,可以達到事半功倍的教學效果。

1.2 板書畫圖,直觀演示,簡化難點

在匯編語言課程中,操作數的尋址方式是學生學習指令和后續內容的基礎,是全書的重點也是難點。在介紹操作數有效地址的4種組成部分(位移量、基址、變址、比例因子[2])時,可以通過一個圖示舉例進行講解,降低難度。

假設數據段有一個字節數組,要用指令訪問數組中的任意一個元素。數據定義如下:

X DB ‘ABCDEFJHIJKLMNOPQRSTUVWXYZ’

此處在黑板上畫圖,可以直觀地演示數據在存儲器存儲的情況以及操作數的尋址方式(圖1)。X是數組在存儲器中的首地址,是一個符號地址。從圖1中可以看出,通過數組首地址和某個元素相對于第一個元素的位移量,就可以訪問到這個元素。

1)例如,在8086/8088處理器下,要將字符“F”存入AL寄存器,可以用下面的幾種方式實現。

①MOV AL, [X+5]

②通常情況下,可以將數組的首地址存入一個基址寄存器(BX或者BP),指令為:

MOV AL , [BX+5]

③可以將位移量用一個變址寄存器(SI或DI)表示,通過修改SI/DI的值,便可以訪問數組中其他的字符,指令為:

MOV AL , [BX+SI]]

2)帶比例因子的尋址方式是386及其后繼機型引入的操作數尋址方式,適合用來尋址多字節數據數組中的元素。此時,可以將圖1所示的數據看成3個雙字(4字節)數組(圖2)給學生講解。如要訪問第三個雙字,則可采用指令:

MOV AL, [BX+SI*4]

這樣只需要知道訪問第幾個元素,修改SI的值即可,不需要計算被訪問元素在數組中的位移量,簡化了思考和計算。特別是在4字節數組或者10字節數組中,比例因子顯得更為有用,使用起來更為方便。

通過此處的講解,不僅降低學生理解基本概念的難度,而且聯系到匯編語言中變量的定義及存儲空間的分配,幫助學生熟悉指令與硬件知識的結合,建立先后知識點間的關聯。

1.3 通過創設情景,幫助學生理解指令功能

在介紹一些不容易理解的指令時,可以通過創設簡單的應用情景介紹指令。例如,可以用一個給字符串加密的應用情景,介紹XLAT指令的功能及應用。

假設數字加密規則為:0~9,分別對應a~j,即如果從鍵盤輸入“3”,則顯示出“d”。數據定義如下:

x db ‘abcdefghij’

板書畫出數據在存儲器中的存放情況(圖3)。從鍵盤輸入的數字字符保存在AL寄存器中,實現加密的指令序列為:

lea bx, x

sub al, 30h

xlat

如果執行指令之前,AL的內容為字符“3”,則指令序列執行過后,AL的內容就為“d”。

課堂上,可以將這個簡單應用編寫成一個具有輸入和輸出功能的完整的程序,給學生演示。這樣既可以講解指令的應用,也可以讓學生熟悉匯編語言源程序的格式及開發過程;也可以將這個程序設計成一個功能可以逐步擴充的系統案例[3-4],通過不斷擴展程序的功能,循序漸進介紹程序設計,這里不再詳述。

2 強化實驗教學

“實踐出真知”,上機實驗是教學的一個重要環節,也是學習和掌握匯編語言程序設計的最有效方法。針對學生學習的進度和知識基礎,合理安排實驗內容。為了督促學生上機實驗,增加實驗成績在期末考核中的比例。平時實驗課上,通過向學生提問題,考查學生掌握知識的情況,這是對教學的一個反饋,可以作為今后提高教學質量、改善教學效果的參考。

3 總結

本文是對筆者多年教學經驗的總結,教學實踐證明,這些方法與手段在一定程度上降低了學習的難度,提高了學生對本課程學習的積極性,改善了教學效果。筆者深知教學相長的道理,有些方法并不是一勞永逸的,要因材施教。因此,要想取得更好的教學效果,還需要相關專業教師的不斷努力,進行更多的探索與交流。

參考文獻

[1]熊小兵.“匯編語言程序設計”的比較教學法[J].計算機教育,2010(3):147-149.

篇7

中圖分類號:G642

文獻標識碼:B

1引言

學生普遍反映匯編語言難于記憶和理解,甚至編了一句順口溜“匯編語言不會編”。因此怎樣提高本課程的教學質量和教學效果是任課教師值得深思的問題。首先教師要告訴學生匯編語言的重要意義,從而激發學生學習這門課的熱情。另外在教學中還應注意以下幾個方面。

2加強上機實驗

在本專業舊版教學計劃中,匯編語言與計算機組成原理是一門課程,關于匯編語言的實驗是20學時。而在新版教學計劃中,匯編語言單獨成為一門課程,實驗壓縮到10學時。實驗學時縮短了,但是一些驗證性實驗又不得不做,因此我們將一些基本的驗證性實驗放到課外作業中,例如關于DEBUG程序的使用,可在進行匯編語言程序設計之前由學生在課下完成,讓學生用DEBUG查看數和字符在CPU的寄存器和存儲器中的存放方式、熟悉各類指令的功能和格式等,使學生加深理解所學的內容,又不占用課上的實驗學時,還為后面進行匯編語言程序設計打下良好的基礎,可謂一舉多得。

3啟發式教學

問是開啟智慧之戰的鑰匙,是發明創造的萌芽,是啟發式教學成功的關鍵。在教學過程中,教師要精心設計富有啟發性的問題。例如存儲器中數據的存儲方式是一個重點內容,但是學生們難于理解同一個單元地址在不同的情況下為什么單元內容不一樣。假設一個存儲器的內容如圖1所示。

若機器字長為16位,采用低字節存入低地址,高字節存入高地址的存放方式。要求學生說出30000H字節單元的內容是多少?大多數學生都會回答是01H。則教師再提問30000H字單元的內容是多少?提示學生因為機器字長16位,而每個單元地址中存放的是一個字節――8位,則存放16位數據需要占用相繼的2個字節,有的學生回答0102H,有的學生回答0201H。再進一步提示字單元的地址由最低字節的地址指定,則大多數學生都會回答0201H。然后要求學生思考一下30000H雙字單元的內容是什么?30000H三字單元的內容是什么?從而引出以下的規律:

例如要訪問內存單元30000H中的內容,若是訪問n*8位的數據,則從30000H開始向高地址方向數n個地址即(30000+(n-1))H,內容從(30000+(n-1))H中的數據開始寫,向低地址方向寫直到30000H中的內容。

這樣也將學生的好奇心調動起來,激發學生的學習興趣。

4案例教學

由于本課程基本概念多、專業術語多,因此教師應該盡量用一些通俗易懂、貼近學生生活的例子進行教學。

尋址方式是重點也是難點,在講解時可通過舉例讓學生易于理解。例如某班的班長負責發信,有個學生甲家里寄來了一個包裹,若是班長直接將包裹發給學生甲,這就是“立即尋址”的概念;若是學生甲知道包裹在班長處,去班長處取包裹,這就是“直接尋址”的概念;若學生甲不知道包裹在哪里,但是他知道班長有包裹單,而拿著包裹單就可以到郵局取包裹,這就是“間接尋址”的含義。通過這個例子,使學生易于理解尋址方式的原理。

5寓教于樂

為了便于學生掌握抽象的內容,可以在課堂上做一些小游戲,通過游戲學生在玩樂中輕松掌握知識。例如求出某條指令源操作數的物理地址,假設尋址方式是存儲器尋址方式,則這個問題要涉及到以下4個步驟:

(1) 得出該指令的源操作數的尋址方式;

(2) 得出源操作數的有效地址,該地址是邏輯地址;

(3) 判斷源操作數所在的邏輯段;

(4) 將邏輯地址轉化為物理地址。

在這4個步驟中,前2步學生基本上都能算對,難在后2步。后2步的過程如下:

(1) 根據源操作數,判斷所在的邏輯段,得到16位段寄存器中的段基值;

(2) 將16位的段基值左移4位,即段基值后面補4個0,得到20位的段基址;

(3)20位的段基址與16位的邏輯地址相加,得到20位的物理地址。

對于這樣的問題,課上可以通過小游戲幫助學生理解邏輯地址和物理地址之間的轉換。我在課上設計了這樣的一個游戲:假設學生宿舍號由6位組成,設為a1a2a3a4a5a6。a1a2表示宿舍樓號,a3a4表示宿舍所在的層數,a5a6表示房間號。若一個學生住在5號樓5層5房間,則該生的宿舍號就可以表示成050505。

請4個學生到講臺上,分別表示4個宿舍樓:1號、2號、3號、4號共4個樓,其中1號樓住的是園林專業、信息專業、計算機專業、城規專業的男生,2號樓住的是地信專業、歷史專業、法律專業、政治專業的男生。3號樓住的園林專業、信息專業、計算機專業、城規專業的女生,4號樓住的是地信專業、歷史專業、法律專業、政治專業的女生。另外再請4個學生到講臺上來,告訴他們專業、性別、宿舍所在的層數和房間號,要求他們寫出學生的宿舍號。在這個游戲中,學生的宿舍號對應于物理地址,宿舍所在的層數和房間號對應于邏輯地址,專業對應于邏輯段。假設計算機專業的某個女生,住在10層30號,要求寫出該女生的宿舍號,則可以按照以下步驟寫出宿舍號:

(1) 確定宿舍樓:因為是計算機專業的女生,則她住在3號樓,記為03;

(2) 確定宿舍號的高兩位:將樓號左移4位,記為030000;

(3) 確定宿舍號的低4位:將層數和房間號拼接在一起,記為1030;

(4) 確定宿舍號:將(2)、(3)步得出的內容相加,即030000+1030=031030,即是該生的宿舍號。

在以上步驟中,第1步與“判斷源操作數所在的邏輯段”相對應,第2~4步與“將邏輯地址轉化為物理地址”相對應,學生在這個游戲中輕松地掌握了求出某條指令源操作數的物理地址后2步的方法。

6改革考核方式

匯編語言的指令繁多,每種指令的用法又多種多樣。例如MOV指令,它有多種傳送方向,如圖2所示,學生掌握起來非常困難。而匯編語言程序設計課程的目的是掌握設計程序的思路,學會用計算機語言編寫程序,重點在于“程序設計”,而不是語法規則。因此,在考試中考慮采用開卷考試,使學生在學習時將重點放在解題思路上,而不去死記硬背各種指令的不同用法。如果條件允許的話,可以采用筆試與上機考試相結合的方式。閉卷考試的側重點在于填空題、選擇題、判斷題等,主要是一些概念題,而有關程序設計的內容放在上機考試中。在上機考試時,要求學生在規定的時間內將程序編寫出來并調試通過。

篇8

中圖分類號:G642

文獻標識碼:B

1教材系列化建設

我們以CCC2002為依據,參考IEEE-CS&ACM 制定的計算機課程指南,閱讀大量的國內外相關優秀教材,結合課程組科研實踐成果,按照系列化建設的思路,先后編寫完成了《Intel 80x86/Pentium匯編語言程序設計》、《匯編語言程序設計(從DOS到Windows)》、《Windows匯編語言程序設計教程》、《Windows匯編語言程序設計實驗指導》等4本教材。其中1本被評為2006年北京市高等教育精品教材,1本被列為2007年“普通高等教育“十一五”國家級教材規劃”,2本作為2007年北京高等教育精品教材建設項目。通過編寫、使用這些教材,為教學內容改革奠定了堅實的基礎。

2教學內容及教學方法改革

在教學內容和方法上加強與“微機原理與接口技術”、“計算機組織與結構”、“操作系統”等課程間的聯系,有利于各門課程之間的融會貫通。教學內容體現課程的時代性和先進性,以32位匯編語言及Windows編程環境的內容為主,從16位實模式轉換到32位保護模式,結合豐富的應用性實例,使所學知識與目前主流的應用環境相結合,為學生的創新能力奠定基礎。

為實現教學模式從“教學型”向“研究型”的轉變,需要充分研究學生的認知過程,掌握認知規律。根據“匯編語言程序設計”課程本身的理論抽象性和鮮明應用性,課程組以建構主義理論為基礎,探索并改進教學方法。在教學設計中體現以學生為中心、以教師為主導的思想,采用重點難點精講、對比教學、形象教學、重視實驗等方法,用多媒體手段、典型實例來展現抽象的編程概念。采用現代化網絡教育技術建立了課程網站及網絡教室,加強師生互動,拓展了交流空間。

例如,在多門專業課中均涉及到“中斷”概念,在匯編語言程序設計課程中以編程實例將它具體化,使學生對抽象的理論概念有了直接的認識,從軟件和硬件兩個角度加深了對中斷機制底層的深層次理解,提高了學習興趣。

又如學生難于理解間接尋址方式,但學生在學習本課程時已有了C語言知識,在教學中就把間接尋址方式與C語言的指針類比,通過與先前知識的銜接,經過對比學習,使學生建構、衍生出更深層次的信息,很容易對新知識消化。對于較難理解的程序轉移地址的形成,采用動畫方式幫助學生理解,并通過CASE結構程序設計實踐鞏固。把宏指令與過程及高級語言的函數對比,學生很快掌握了其設計方法,他們通過主動對知識的處理和轉化,又總結出“宏實際更像高級語言的預定義,用到它的地方都會有它一份拷貝,所以宏可能讓你的真正代碼量劇增”。

通過精心組織教學,選擇與實際應用密切結合的教學案例,在課堂上和網絡支撐平臺上增加總結和討論環節,鼓勵學生主動反思,從而調整個體的認知,幫助學生實現在原有認知基礎上新知識的整合,在融合了多門課程知識的基礎上,形成系統的知識觀念,提高綜合應用和創新能力。

3構建先進的實驗平臺

在微機系統的教學和實驗內容上,Windows操作系統及32位保護模式已成為匯編語言的發展趨勢。然而,目前Windows環境下還沒有一種專門用于匯編語言的主流開發工具,而底層匯編語言編程所面向的硬件型號和接口又存在巨大差異。為此,課程組開展了改革匯編語言程序設計實驗環境的探索,編寫了《Windows匯編語言程序設計實驗指導》教材,構建了新型的實驗環境,采用Microsoft Visual C/C++集成開發工具來編寫、調試匯編程序(見下圖),使匯編程序的編輯、編譯、連接、調試等過程均與C/C++程序一致,減輕了學生學習負擔,提高了C/C++與匯編混合語言編程能力。應用虛擬機軟件技術,使匯編語言編程面向虛擬的、統一的硬件及其接口,保證了實驗環境的統一性,提高了實驗效率。

4開設體現前沿性、先進性的匯編語言實驗

匯編語言程序設計是一門實踐性很強的課程。課程組跟蹤計算機軟硬件技術的最新發展,對國內外的相關課程教學及實踐進行了深入的調研,結合在科研實踐中取得的部分成果,開設出一系列具有鮮明應用特色的驗證型、綜合型和創新型的層次實驗,并寫進《Windows匯編語言程序設計實驗指導》教材中,進一步鞏固理論教學內容。

圖 VC集成環境下的匯編語言調試

驗證型實驗以掌握單元知識為目標,著重訓練基礎編程能力,如數據塊操作、數據顯示、字符串排序、素數判斷、有序數組合并等。

綜合型以融合本課程知識為主,如多模塊程序設計、中斷程序設計、線程同步、文件管理等。

創新型以設計具有應用背景的實驗為主,培養學生對計算機知識體系的融會貫通及創新能力。如數據庫管理系統設計、全屏幕編輯器設計、緩沖區溢出實驗、讀取硬盤序列號、硬盤DMA等。

基于個體的差異性,學生可以按照自己的能力和興趣選做部分或全部實驗,充分發揮了學生的主觀能動性。這種強調自主學習的教學過程和方法,有效地促進了學生自我認知的發展和新知建構。通過實踐環節,提高了學生的程序設計能力,為學習后續專業課程,設計硬件驅動、性能優化、代碼對抗等底層系統級軟件打下堅實基礎,培養了學生的創新能力。

參考文獻

[l] 李未. 提高教育質量,培養創新人才[J]. 計算機教育,2008,(1).

篇9

文章編號:1672-5913 (2007) 24-0023-03

1“匯編語言程序設計”課程教學現狀的分析

匯編語言是一門面向處理器的低級語言。該課程一方面配合“計算機組成原理”、“微機原理及接口技術”和“嵌入式系統”等課程,為自動控制等與硬件相關的應用領域提供基礎知識;另一方面作為“操作系統”及“編譯原理”等課程的程序設計基礎,從軟件角度理解計算機的工作原理,加強學生的高級語言編程能力。

目前在大部分院校該課程的教學模式依然沿用傳統的教學方法。在課程講授環節,以主講教師授課作為主體,輔以課后作業、定期答疑;在實踐環節,根據課程的進度,配置相應的上機實驗。從多年的教學實踐的結果來看,這種傳統的教學方式基本可以達到預期的教學目標。通過本課程的學習,學生能夠基本掌握Intel 80x86系列處理器的指令系統和匯編語言,能夠運用學到的匯編語言知識開發一些簡單的應用程序。但隨著教學體制改革的不斷深化,信息化、網絡化教學技術的不斷成熟,特別是學生自主化學習的理念不斷加深,引發了我們對當前教學模式以及考試方法的思考。

“匯編語言程序設計”課程是一門理論性和實踐性都很強的計算機專業的核心課程。本課程的學習要求學生對計算機的組織結構,特別是計算機的指令系統有一定的了解;該課程所教授的知識,不是單純的理論知識,必須要求學生進行上機實踐操作,這樣才能更加熟練地掌握這門語言。因此,傳統的教學方法也不可回避地暴露出與這門課程的特點所不相適應的弊端,歸納起來有如下幾點:

(1) 由于匯編語言程序設計較C語言等高級語言程序設計更加煩瑣,并且與硬件關系密切,因此使得學生感到學習這門課程有一定的難度。

(2) 課時的緊迫與學生課業負擔較重產生矛盾,使得學生學習不夠扎實,影響學生的學習效果。

(3) 答疑時間太為固定集中,有時可能與學生的時間發生沖突。

(4) 學生自由支配的時間過少,教學計劃與學生實際的學習進度不相一致。

當然以上幾點也可能是在許多其他課程教學過程中所存在的通病,但在“匯編語言程序設計”這樣一門理論性和實踐性都很強的課程中就顯得尤為突出。這也就迫使我們朝著學生自主化學習的方向不斷探索、不斷前進。

2學生自主化學習的研究

顧名思義,學生自主化學習就是把教學的主動性從老師那里拿回到學生手中。具體地講就是改變傳統的教師主講的教學模式,將學生被動的聽課模式轉變為學生自主地學習。這樣可以給學生充裕的時間自由支配自己的學習,提高學生的主動實踐、積極思考的能力。從而提高學生的學習興趣,使學生學有所得,學有所獲。

必須指出的是,這種自主化學習的方式在教育界曾多次提出,但收效極佳的還未見到。分析其原因主要有以下兩點:

(1) 自主化學習留于形式,最終導致自主化學習變為了不學習

目前,有些課程推行所謂的學生自主化學習的教學模式,其實是把教學的一切任務都推給了學生,老師也不聞不問,最后象征性的考試了事。這樣的教學不但起不到提高學生自主化學習、主動實踐、積極思考問題和解決問題的能力,反而在學生中滋生了浮躁、渙散的學風。這種做法是極不可取的。

(2) 自主化學習缺乏必要的技術支持,嚴重影響了教學的效果

如果教學過程缺乏必要的技術支持,自主化學習的學習模式也是很難推行的。其相應的技術支持應包括在學校構建一個用于學生進行自主學習的在線學習平臺,建立起一套完整的課程教學計劃、課程進度安排、課程學習目標、課后作業布置以及在線答疑等系統。這樣才能為學生的自主化學習提供物質上的保障。

北京工業大學在學生自主化學習方面也有過積極的嘗試。在“計算機組成原理”課程的教學實踐中,利用先進的互聯網技術開發了校園網學生在線學習子系統。利用該系統可以在正常的教學過程中作為學生在線學習的輔助指導,為提高學生主動學習的積極性及師生之間的相互交流提供了有力的支持。因此,在“匯編語言程序設計”課程的教學過程中,我們也可以借鑒“計算機組成原理”課程的教學經驗,并不斷完善,最終實現全面的學生自主化學習的過程。

3應用校園網在線學習及考試系統實現學生自主化學習

教學工作的信息化、網絡化、無紙化長期以來一直是我們研究的對象和目標。也是實現學生自主化學習的物質基礎。它不但可以提高學生主動思考、積極探索的能力,而且在一定程度上可以提高教學效率,激發學生的學習潛能。

北京工業大學正在研究、開發并完善“校園網在線學習及考試系統”。利用該系統,可以很好地實現教師教學和學生學習的信息化及網絡化。此系統是實現學生自主化學習的物質基礎和實踐平臺。雖然該系統尚處于試驗階段,功能尚不完善,但它對于最終實現學生自主化學習是一個積極的探索和有益的嘗試。

校園網在線學習及考試系統的總體結構如圖1所示。該系統的實現可以把課程的學習、課后的作業練習、疑難問題的答疑及最后的考試等教與學的工作環節都放到互聯網上完成。

圖1 校園網在線學習及考試系統總體結構圖

從圖1可以看出校園網在線學習及考試系統采用基于網絡架構的B/S模型建立。服務前臺共分為四個功能模塊,每個功能模塊提供一種特殊的服務。

(1) 在線課程學習模塊:利用該模塊教師可以在每個學期的開始,為學生制定一份詳細的學習計劃,學生根據計劃的安排和本課程的教學要求結合自身的實際情況進行課程的學習。教師可以按階段把當前應該掌握的知識以及應該完成的學習進度以消息的方式提示給學生,以便學生自己掌握好學習的進度。這種模式可以把只有教師教、學生被動學的教學模式,轉變為由教師制定學習計劃、讓學生自己根據實際情況進行在線自主學習的教學模式。這樣每個學生能夠根據自己的時間安排,自由選擇、合理安排“上課時間”。這種教學方式可以有效地提高學生的自主化學習及獨立思考問題的能力,在自己的主動探索中不斷發現問題、提出問題并且解決問題。

(2) 在線作業模塊:本模塊旨在通過網絡平臺給學生布置課后作業及上機實驗,學生可以通過該模塊在線提交作業及上機實驗結果,教師可以及時檢查、了解學生的學習狀況,以督促學生進行主動學習。

(3) 在線答疑模塊:一個合格的在線學習系統必須包含在線答疑模塊。在線答疑模塊為教師和學生、同學和同學之間提供了提問、交流、切磋的平臺。在線答疑平臺是一個論壇形式的公共平臺,它的功能主要是由學生在線向教師提出課程學習中的疑難問題,由教師定期予以回復。但在實踐中我們發現,這個平臺的功能遠大于此。學生們不但在在線答疑平臺上提出了許多很好的問題,而且同學之間也可以進行豐富的交流。有時,不用等到教師給出問題的答案,同學之間就已經把問題解決了。因此,這個平臺真正成為了教師、同學之間進行交流、傳授知識、切磋技藝及發表心得的紐帶。

(4) 在線考試模塊:在課程學習結束后,可以通過在線考試模塊來考察學生對相應課程的學習掌握情況。通過Internet/Intranet實現網上考試,是現代教育技術的一個具體實現,具有很重要的現實意義。通過網絡進行在線考試的模式是對傳統的考場考試方式的延伸,它可以利用網絡的無限廣闊空間,隨時隨地對學生進行考試。該模塊的實現,不僅可以實現自動化組卷、閱卷及考務工作的全自動化管理,為實現考試的客觀性和公正性、實現考教分離及進行大規模的考試提供相應的支持,而且可以有效地利用校園網的軟硬件資源,使其發揮最大的效力,更好地為學校的教學、科研、管理服務,也為檢查學生進行自主化學習的效果提供了一定的技術支持。

4結論

本文通過對學生進行自主化學習方法的探討和研究,提出了關于“匯編語言程序設計”課程實現以教師為主導、學生進行自主化學習教學模式的方案。詳細介紹了北京工業大學校園網在線學習及考試系統的基本構架、部分已實現的功能、系統的整體構想以及該系統對學生進行自主化學習的具體幫助及技術上的支持。

通過對匯編語言程序設計課程自主化學習教學實踐的研究,可以看到為了更好地實現學生的自主化學習,教師不僅需要研究各種教學方法及教學內容,而且需要利用先進的現代化網絡技術,進一步完善教學及實踐方式,這樣才能更好地指導、協助學生進行自主化學習。自主化學習教學方案的實施,不僅能夠培養學生自主學習、獨立思考問題、解決問題的能力,而且能夠極大地提高學生的實踐能力及創新精神。我們期望匯編語言程序設計課程的自主化學習的教學改革與實踐,能夠為其他課程的教學改革提供一些積極的探討和有益的經驗。

參考文獻

[1] 梁峰. 多媒體校園網系統探討[J]. 教育技術理論與實踐,2005,(4).

[2] 易小琳等. 基于EDA平臺的計算機系統硬件課程虛擬化實踐的研究[J]. 中國大學教學,2005,(7).

[3] 易小琳等. 網上計算機系統虛擬實驗室的研究[J]. 計算機工程,2002,(11).

[4] 中國計算機科學與技術學科教程[M]. 北京:清華大學出版社,2002.

作者簡介

易小琳(1959-),女,高級工程師、計算機系統結構教研組主講教授,碩導,目前研究方向為計算機系統結構及嵌入式系統。

魯鵬程(1976-),男,講師,計算機系統結構教研組教師,博士,目前研究方向為計算機系統結構及嵌入式系統。

周巍(1982-),男,研究生助教,目前研究方向為計算機系統結構及嵌入式系統。

楊峰(1984-),男,研究生助教,目前研究方向為計算機系統結構及嵌入式系統。

聯系方式

北京工業大學計算機學院,北京朝陽區平樂園100號,100022,易小琳

篇10

匯編語言是一種面向機器的編程語言,運算速度快,在使用匯編語言的過程可以通過提高存儲器運行速度來提升其存儲空間,另外,匯編語言其控制作用力應用在硬件上也有著無法取代的優點。同時匯編語言也有著程度較高卻復雜和移植性差等缺點,但是在實際的操作中,硬件還有精確定的過程中必須要用到匯編語言。C語言作為一種高級語言,其表達性以及靈活性還有開發性均較高的優勢,因此為了更好的發揮匯編語言和C語言在開發軟件中各自的優點,將兩者有機的結合起來,取長補短混合編程更好的達到設計的要求,高質量的完成設計任務。

1 C語言程序設計技術方法

(1)可以在C語言程序之中確定匯編程序的常、變量。

(2)可以在C語言編程當中適當的增加語句編輯,保證實現C語言無法控制硬件的缺陷。

(3)然而使用C語言程序時可以通過內部函數的使用加入匯編語言中的相應語句。

2 匯編程序設計技術及方法

在C語言編程當中,可以將匯編語言的代碼直接的編寫進去,并且融入匯編語言的過程當中可以不使用分號,詳細的語法是:

asm

若想要將一組匯編語句融入到C語言中,必須要將語句括到括號{}當中。

asm {

mov ax,dataA

xchg ax,dataB

mov dataA,ax

}

一般想要在C語言程序當中編入匯編語言,有四種類型,分別是一般指令、跳轉指令、串聯指令和局部定義指令。

匯編語言子程序應用在C語言中,一般情況下匯編語言的子程序其基本格式是:

MYCODE SEGMENT PARA PUBLIC‘CODE

PUBLIC_函數名;

公共符號說明DGROUP GROUP MYDATA,MYBBS

MYDATA SEGMENT WORD PUBLIC‘CODE’

...定義變量,初始化數據

MYDATA ENDS

MYBBS SEGMENT WORD PUBLIC‘CODE’

...非初始化數據,開辟內存區

MY BBS END

ASSUME

CS:MYCODE,DS:DGROUP,SS:DGROUP

...

_函數名 PROC NEAR/FAR

PUSH BP

MOV BP,SP

PUSH SI

PUSH DI

...程序主體語句

POP DI

POP SI

POP BP

RET

_函數名 END UP

...

MYCODE ENDS

END

3 C語言匯編語言需要調用其它子程序的語言格式

把被調用程序其格式和普通匯編語言程序分布情況加以比較能夠發現:

因為C語言程序和進行匯編的子程序需要共用同一個程序運行區間,所以在剛剛開始進行子程序的C語言匯編時就需要運行PUSH BP和MOVE BO,SP這兩個命令。

必須要把將會被修改和匯編到C語言程序中的子程序進行局部調用的PUBLTC操作,通過進行PUBLTC的操作來表示該段C語言子程序已經參與到其他的操作中,被其他程序所調用了。

雖然已經被調用的子程序會接受程序的控制,但也需要對該段子程序利用SI和DI進行局部變量的保存,但是僅在變量高于120分鐘時,才能將其在堆棧當中加以存放。因此,這一模式進行過程中,我們可以清楚的看到PUSH DI還有PUSH SI的語句。

在經過匯編的程序C語言中,要把MYCODE的代碼段、初始數據段、修改數據段進行分別的定義,并且把這幾個分段的匯編程序組合成為一個有效段組,保證該段段組基址的共用性。

在匯編之后的程序語句之前必須要增加一段函數值語句,保證語句可以有效的返回,進行下一段的程序循環,并且設置的返回值要在RET語句的前方。

值得注意的是,不同意調用過的子程序必須要用RET的命令增加返回功能,并且在結束語句后編輯結束END。這個END語句代表的是最終的終止,沒有相應的啟動功能。

通過C語言子程序的匯編,可以有效的保證其調用功能,同時也節省了相應的程序編輯空間。例如在程序輸入時,不用修改程序的進位制就能準確的進行數據的讀取,也就是說參與匯編的C語言子程序在格式上不會有太大的改變,只需要在原本子程序的起始部位增加相應的語句就可以了。

EXTERN 函數名,主要作用是為了反應出這個函數是C語言的子程序,且是外部調用的、。原本的主程序語句,可以利用外部程序來實現原本語句的調用功能,具體的調用格式如下:CALL NEAR PTR 函數名,而在將C語言程序當做是子程序的過程中,只包含有C函數,并不需要EXTERN來進行進一步的說明。

4 連接兩種語言

由于匯編語言和C語言二者均存在著一定的問題,通過將兩種語言混合編程,能夠彌補兩種語言各自存在的不足,因此,下面闡述如何連接這兩種語言。

4.1 傳遞參數

在調用C語言及匯編語言時,可能會存在匯編語言的參數傳遞問題,通常都是利用堆棧來進行傳遞,通常在匯編C語言的過程中,要把BP基址當作原數據的儲存器,C語言的匯編參數全部儲存在堆棧儲存器當中,如果在需要使用儲存參數時,可以把存儲在堆棧當中的數據進行清除處理。

4.2 調用關系的確定

對于即將要調用的函數或者是過程,要在調用開始之前明確的說明,建立完整的調用關系,詳細的說明被調用的子程序是屬于那個外部過程當中的,并且被調用的子程序應用在什么模塊當中。另外要根據調用模塊和儲存方式的不同,對被調用的C語言匯編子程序進行格式的確定,一般情況下被調用的在大模式下與原本程序類型基本相似,小模式下存在微小的變化

4.3 模塊連接

原有的C語言模塊想要和匯編C語言的模塊進行準確的連接,就需要做到以下兩點:

(1)原有C語言模塊必須與匯編C語言模塊的儲存方式相同。

(2)要求匯編模塊要遵守和C語言模塊兼容的相同命名。

因為編譯系統在編譯C源程序的過程當中,將會在函數名以及變量名稱的前面畫有下劃線,想要保證連接前后相同,全部被C語言調用的匯編子程序其標識符前面都要標記下劃線。并且,想要使匯編語言的標識符在C語言當中能夠看見,需要用PUBLIC來定義。要求匯編語言當中其C語言的變量以及函數,必須要在二者前面加上下劃線,同時,要求匯編程序開頭的所調用C函數以及變量必須要用EXTERN對其進行說明。

為了有效保證C語言及匯編語言二者混合情況下設計的程序標準,能夠有效的實施,必須要保證主要參數在變成函數被調用的過程中具有有效的傳遞作用,并且要求針對程序設計具體的情況來確定兩個語言之間相互調用的關系。

在C語言的程序當中包括六種儲存形式,分別是微型和小型以及中型和金丑行,還有大型和巨型這六種儲存的模式。通過這點我們可以知道,主要由空間的大小來區別儲存模式。在這當中微型的儲存模式其程序和蹲站都在同一段中,而小型的儲存模式擁有數據以及代碼段,詳細的數量為同一個。如果想要混合編程,首先必須要保證這兩個程序所使用的是一個儲存模式,對于匯編語言來講,Model表示程序當中用到的偽指令,之后需要連接的內容便是儲存的模式,通常是上面所講的儲存模式當中的一種模式。若C語言程序所使用的儲存模式是小型的,那么匯編語言當中就會表示成Model Small,并且在這個時候這兩種程序使用的儲存模式一定是相同的類型。因為小型儲存模式將Near當做是基礎指針,因此,這種儲存模式其運行效率極高,所以說在實際混合編程的情況下,如果符合條件這種情況下最好選擇小型儲存模式。

在編譯C語言的過程當中,在變量以及函數名稱的下面將會添加下劃線,為了保證連接的質量,調用子程序的過程當中,任何標識符其下方都應該添加下劃線。站在C語言程序的角度去看,將會把所調用的對象其中實際的變量和函數作為偽命令,進而起到說明的作用。一般把命令放在函數和變量的外部。除此之外,由于想要保存匯編語言程序標示符的完整性,應該使用PUBLIC定義相應的標示符。

5 結束語

通過本文對匯編語言與C語言的混合程序設計技術的進一步闡述,使我們了解到在開發軟件的過程當中使用這兩種語言混合的程序設計的技術,能充分發揮兩種語言各自的特點,揚長避短,大大提高了軟件開發的效率,縮短開發的周期,達到事半功倍的效果。通過本文對二者之間混合程序設計技術的具體闡述,希望能夠給使用匯編語言及C語言混合程序設計方面提供一定的幫助,對于我國軟件開發方面起到促進的作用。

參考文獻

[1]陳久婭.C語言與匯編語言的混合程序設計技術研究[J].電子制作,2013(04):61.

[2]康晶晶.匯編語言與C語言的混合程序設計技術[J].計算機時代,2013(06):1-2.

[3]印德彬.匯編語言與C語言的混合程序設計技術[J].電子技術與軟件程,2015(02):254.

作者簡介

篇11

文獻標識碼:B

文章編號:1672-5913(2008)06-0019-03

1教學現狀及存在問題

在目前匯編語言的教學過程中,普遍存在的問題就是主流的微型計算機已經進入了64位時代,多任務的操作系統取代了DOS,而絕大多數高校匯編語言程序設計課程仍然是單任務操作系統(DOS)下的8086匯編語言,給學生的印象是跟不上時展的步伐。加之,匯編語言和機器的體系結構結合緊密,使用者需要對計算機的組成、硬件的控制和指令的解釋過程有比較清晰的掌握;程序的移植性不好;指令眾多,且同種類型的操作(算術、邏輯、轉移等)要根據操作數和狀態標志選擇不同的指令(如無符號的運算與帶符號的運算、條件轉移等);運算中要根據數據長度懸而選擇不同的寄存器;程序的編譯調試比較麻煩;編寫出吸引人們感官的程序比較困難。因此,學生在匯編語言的學習中容易產生厭煩情緒。有的學校減少了匯編語言的課時,還有的學校甚至干脆取消了這門課程。

2“匯編語言”課程的地位

匯編語言機器級在高層機器和低層機器間扮演了承上啟下的角色,是計算機及相關專業學生需要掌握的重要專業基礎知識之一。

從應用場合來看,匯編語言是能夠利用計算機所有硬件資源并能直接控制硬件的唯一計算機語言,也是除機器語言之外最接近計算機硬件的編程語言。匯編語言程序產生的代碼精簡、運行效率高,具有高級語言不可比的“時空”優勢;匯編語言在一些應用如嵌入式系統和工業控制中,匯編語言最最佳的甚至是唯一選擇的開發語言。在一些實際的應用系統中,人們往往會用匯編語言來徹底重寫某些經常調用的過程以期獲得更高的性能。

匯編語言為“計算機組成原理”、“計算機接口與通信”、“操作系統”、“高級語言程序設計”等相關課程提供了必要的基礎知識,如圖1所示。

圖1 匯編語言和其它課程的關系

從人才培養方面來看,計算機專業的學生不應僅僅滿足于利用他人開發的軟件和工具來解決實際問題,還應具備分析、研究原有軟件系統,改進、完善、提高原有系統功能的能力。匯編語言的教學將使學生受到更嚴密、更系統的程序設計及思維方法的訓練,為深入分析、研究、開發軟件系統打下良好基礎。

3加強實踐教學

為了提高匯編語言教學的效果,筆者認為應該從以下幾個方面入手。

(1) 清理認識上的誤區。在上第一堂課時,用一個課

時來講匯編語言的特點及其應用場合、它和高級語言區別、其難點在哪里、本課程該如何展開等內容,從而打消學生畏難和輕視的思想。

(2) 要充分利用好計算機輔助教學(CAI)的優勢,要讓課件“動”起來。目前普通本科計算機專業的教學大都采用了CAI教學,但大都是播放課件(如PPT),實質上是用鼠標代替了粉筆、屏幕代替了黑板。而且由于播放的速度遠快于板書,學生反映根本來不及仔細理解有關內容,效果反而不如板書。多媒體教學提供了視覺、聲音的特殊效果,在對重點、難點問題的講授中要充分利用多媒體教學的優勢。如講授指令ADD AX,[2000H],如果是靜態的課件,就是一句“這是一條加法指令,把累加器的內容和邏輯地址為2000H存儲單元的內容相加,運算結果送回累加器”。而動態的課件會先畫出一個模型計算機,然后演示該指令解釋的全過程:從CPU內存中取出指令、譯碼、數據尋址(從寄存器和內存中取得操作數)、啟動ALU運算、保存結果到累加器和影響狀態標志寄器。每一步都要圖示化出數據的變化和走向以及相應的控制時序。在聲音和顯示控制的程序設計教學中,更應展示多媒體教學的風采。多媒體教學豐富的動感效果能極大地增加學生對指令的感性認識,增強他們學習的興趣。當然,制作這樣的課件耗時耗力,學校應該切實加大對CAI教學的支持力度。

(3) 在匯編語言的教學中要加強和高級語言的比較教學。在學習匯編語言時,學生一般都具有了C語言程序設計的知識。在匯編語言程序設計的教學過程中,應該比較這兩種語言的編程特點、程序代碼空間、運行速度等,以加深學生對這兩種語言的理解。如在講授基址變址尋址方式中,可以用C語言和匯編語言分別實現對數組運算的實例來闡述。要加強高級語言(C語言)和匯編語言的混合編程的教學,充分闡述C語言結構化設計和匯編語言對機器低層(存儲器、寄存器、中斷處理、I/O)控制的優點。這樣即可充分調動學生的學習積極性,也可以培養學生解決具體應用的能力。

(4) 加強操作系統相關知識的滲透和虛擬模式下的編程教學。目前操作系統的核心部分是用匯編語言來實現的,如對CPU本身的初始化(包括定時器、中斷、I/0端口等的初始化);系統引導啟動程序的完成;在處理器的控制下從實模式進入保護模式,實現虛擬存儲器的管理和多任務的調度。將該部分引入到教學中是有必要的,能加強學生對操作系統中內核引導啟動與駐留、保護模式和實模式的切換、多任務的調度等知識的理解。在講授操作系統對程序的引導和進程的調用時,適當介紹計算機病毒的機理,以提高學生的學習興趣并擴展知識面。

(5) 要切實抓好實驗教學環節。課堂主體教學和一般作業很難讓學生真正領會本課程涵蓋的概念、原理、方法和技巧等。經驗表明,學習并真正掌握匯編語言程序設計的最好方式是充分實踐。實驗教學和課堂主體教學“兩手都要硬”,在課時分配上達到1:1。

4建立實驗教學平臺

傳統的匯編語言上機實驗一般是在DOS環境下的進行,如圖2所示。而DOS逐步被淘汰,目前流行使用Windows操作系統平臺,學生對DOS的使用相對陌生。盡管Windows保留了DOS的工作方式,可以切換到DOS提示符下操作,但是對建立文件夾(目錄)、進入文件夾(目錄)、刪除文件等操作,學生們常返回到Windows環境中來完成,顯然會影響上機的效率和增加編程的繁瑣,同時也不利于WIN32虛擬模式下的教學。

圖2 匯編語言程序開發的傳統操作過程

因此,必須建立基于Windows操作系統的W32匯編語言集成實驗環境,該環境是一個集編輯、編譯、連接、程序調試和幫助于一體的實驗平臺。筆者主持的課題組經過系統的調研、編程和測試已開發出一個匯編語言集成編譯系統,該系統已成功應用到本課程的實驗教學中,效果較好。系統的運行界面如圖3所示。

其次,要精心編寫實驗指導書和安排實驗內容,組織好課程設計。結合目前廣泛使用的PC機的Intel 80x86指令系統來開展教學,通過在集成環境下匯編語言的上機實訓,加深學生對指令系統和匯編語言程序設計的認識和理解。實驗的內容可以組織如下:

(1) 指令系統。用DEBUG調試工具來熟悉指令功能和尋址方式,掌握簡單程序的調試。通過實驗了解CPU的組成,熟悉8086/8088寄存器組、8086/8088存儲器組織、8086/8088標志位的意義。

(2) 匯編語言程序設計。包括順序程序設計、循環程序設計、分支程序設計、子程序設計和宏匯編程序設計等實驗。掌握各種程序結構的設計方法,了解宏匯編、條件匯編和模塊化程序設計等匯編語言程序的概念,掌握宏匯編程序設計的基本方法。

(3) 輸入輸出與中斷。包括輸入輸出程序設計、中斷處理程序編寫、常用系統中斷(如時鐘顯示、鍵盤和顯示器、使用鼠標的程序設計)控制等實驗。

(4) Win32匯編語言程序設計。包括32位微處理器與32位指令、保護模式下的32位匯編語言程序設計等實驗。

(5) 匯編語言與C/C++的混合編程。主要包括C/C++程序與匯編語言程序的連接、嵌入匯編與模塊調用等。

圖3 匯編語言集成開發環境

參考文獻

[1] 沈美明. IBM-PC匯編語言程序設計[M]. 北京:清華大學出版社,2001.

[2] KIP R. IRVINE. Assembly Language for the IBM-PC[M]. Prentic Hall INC,1993.

[3] 李學干. 計算機系統的體系機構[[M]. 北京:清華大學出版社,2006.

[4] 金海溶. 用實驗方法改革匯編語言的教學[J]. 計算機教育,2006,(1):36-37.

篇12

依據測繪中、高職學生畢業就業瞄準工程現場工作崗位需要的實際。在工程類的工作中,特別是在類似道路工程施工現場,伴隨工程進程,需要反復進行放樣或校核,而且需要現場進行數據處理,這樣的數據處理的特點是數據量不大,數據處理模型不復雜,但實時性要求高,要求立即指導現場施工工作。由于施工現場灰塵多、野外供電困難等環境條件的原因,通常是不方便使用電腦的,因此,計算器,特別是程序計算器一直發揮著極其重要的作用。

1 可編程計算器的工程應用

信息社會的到來,使得人們對計算機的依賴程度越來越強,但并不意味著計算器可以完全被取代,不同的計算工具都有各自的用戶群體??删幊逃嬎闫骱陀嬎銠C相比,具有價格低、體積小、攜帶方便、容易操作等優點,和不具備編程功能的普通計算器相比,又具有可解決相對復雜的計算問題、使用和修改方便等優點,因此在各行各業中得到了廣泛的使用,尤其在工程行業應用最為廣泛。

早在20世紀90年代末,可編程計算器就已經在我國工程界得到了比較廣泛的應用。隨著社會的進步,科學的發展,可編程計算器在工程領域中的使用也在增加,例如:在坐標轉換中的應用、圓曲線與緩和曲線上點的坐標計算、道路縱斷面中平測量、隧洞開挖和欠挖中的計算、隧道斷面測量、公路與鐵路路線任意變坡點連續豎曲線高程計算、橋梁施工測量中的計算、高鐵施工中的相關計算等。

隨著計算器的不斷發展,計算器的內存容量也逐漸增大,有些已經可以使用存儲卡存儲程序。計算器不斷地升級換代,功能更加強勁,計算器的處理能力也在不斷增加,以適應現代工程技術發展的需要。

2 高職高專測繪相關專業學生計算能力培養

“測、繪、算”是測繪學生要掌握的基本技能,“算”是其中重要的一項,學生學會一種以上計算器的使用是很有必要的,可以提升學生的計算能力。

根據高職學生就業面對工程現場一線崗位的特點要求,在《高等學校高職高專測繪類專業規范》和《教學基本要求》中要求設置“計算器測繪程序設計與應用”課程,以期待通過學習,構建學生滿足現場工作實時需求的數據處理能力。這樣的數據處理能力,也是構成學生計算能力的不可缺少的組成部分。即使是當前測繪技術和裝備已經數字化、信息化的狀態下,測繪地理信息技術人員的現場工作依然需要工程計算器,特別是對可編程計算器應用能力的需求。

但現在的學生對計算器認識不夠。智能手機、平板電腦等電子產品的不斷涌現,價格水平也逐年下降。計算器在學生的潛意識里已變得不再重要,他們覺得,手機、平板即可代替計算器。

但就中國目前來看,計算器還不能完全被替代,計算器所具有的優勢:如小巧、輕便,便于攜帶;電池耐久;計算程序容易編寫等,使得它在短時間內還不會從市場上消失。這就要求我們改變學生對計算器的認識,從計算器的基本使用開始,讓學生系統地學習可編程計算器,培養學生的計算能力。

3 可編程計算器程序設計課程中存在的問題

到目前為止,高職高專開設可編程計算器程序設計課程還存在以下問題:

3.1 教材的選擇

很多學校都開設了計算器編程課程,但是一直沒有適合的教材作為參考,上課非常不方便。雖然算器編程相關書籍非常多,但作為教材還不夠系統,難易程度也不合適。

3.2 可編程計算器機型選擇

市面上的計算器品牌很多,如CASIO(卡西歐)、得力DELI、TI(德州儀器)、SHARP(夏普)、Canon(佳能)、COMIX(齊心)等。各種品牌、型號的計算器,它們各有特點,且操作不完全相同,計算器的按鍵對于不同的品牌、不同的型號,區別也比較大。編程計算器的程序語言也不完全相同,計算器的計算功能的多少、在工程上的使用程度等都影響計算器的選擇,同時還要兼顧學生本身的經濟條件。因此,選擇哪一種機型的計算器用在教學中是一個要解決的問題。

3.3 教學內容的選擇

因課程開設時間的不同,對教學內容的要求也不一樣。如果開設時間過早,相關的基礎課程還沒有學習,學生學習起來困難較大。將課程安排在大部分專業課程之后,基本原理部分的講授就會變得相對簡單,但編程內容要如何選擇,怎樣安排整個教學內容才能達到比較好的效果呢?這是我們要解決的又一個問題。

4 課程建設

4.1 教學時段安排

因計算器編程課程與很多專業課程密切相關,如果大部分專業課程沒有學過,在講程序設計時,勢必要把所有沒學過的數學模型及原理從頭講一遍,這樣就會與其他專業課程重復。根據多年對本課程的教學和研究,將課程安排在完成大部分專業課程之后,將會事半功倍。

此外,計算器程序設計課程同一些專業課程會同時開課,將計算器程序用于這些專業課程中的相應計算中,這樣的學習效果會更佳。例如在開設工程測量課程時,將曲線放樣元素的計算用計算器程序來完成,計算更快,學生也更有學習興趣。

4.2 教學時間安排

4.2.1 一周安排幾節,用一個學期的時間完成課程教學

這樣安排,學生有時間學習和消化講過的內容,但時間過長,可能在下次上課的時候就將上節的內容忘記了。

4.2.2 集中排課,一周時間完成課程教學

用一周或兩周的時間,集中學習。天天都在接觸計算器及相關編程內容,記憶深刻。但集中學習,一次接受的知識太多,學生理解起來有困難。在學過一個知識點后,學生沒有更多的時間去消化吸收。

這兩種安排各有利弊,但將其綜合起來,將課程安排半個學期的時間,教學的進度與學生的接受能力都可以得到滿足,教學效果更佳。

4.3 總學時的確定

課程的安排要滿足學生學會計算器的基本功能、基本編程功能、專業計算程序的編寫、在工程應用中使用到的一些常用計算器程序等。由易到難,學生從計算器的基本功能開始學起,通過學習平時熟悉的數學模型,學習興趣會更濃。通過這樣的循序漸進的過程,逐漸掌握程序編寫的要點與技巧,從而學會編程。要達到這樣的教學目標,總學時安排大概30學時即可。

4.4 計算器機型的選擇

根據卡西歐(中國)貿易有限公司市場部相關人員的市場調查,及測繪相關專業已經畢業的學生反饋的信息,在工程中使用較多的機型為CASIO fx-5800P計算器。因此,為了適應市場及學生就業崗位的需求,課程選用CASIO fx-5800P計算器作為主要機型,有針對性地講授其編程方法,同時附帶市場上用的相對較多的其他機型作為比較。

5 教材建設

針對各高職院校計算器編程課程的困擾及課程特點,經過全國測繪地理信息職業教育教學指導委員會認真研究,組織編寫了《Casio fx-5800P測繪程序設計與應用》教材,該教材從測繪及相關專業出發,內容涵蓋計算器的基本計算操作、編程基礎、點位坐標計算、參考橢球與坐標轉換、高程測量計算、導線測量計算、曲線測設和面積計算等程序的編寫與使用,與測繪專業緊密結合,難易程度相當。學生學習了相關測繪基礎知識,如測繪基礎、測量平差、控制測量、工程測量等學科之后,再來學習計算器程序設計,在數學模型的學習上不用花費過多的時間,重點放在程序設計與使用上,效果會更好。

在信息化比較發達的今天,除了紙質的教材外,學生可以借助各種媒體進行學習。同時考慮到課程的學習時間不是很長,需要在短時間內掌握編程技巧與方法,所以在教材出版的同時,還配套有課程相關的學習視頻、課件、教案等供老師和學生參考。學生除了在課堂上學習外,還可以自由安排時間進行自學。老師上課更輕松,學生也可以更好地學習。

6 結語

課程建設方案及教材內容的設計,在由全國測繪地理信息職業教育教學指導委員會組織的“工程計算器與測量教學整合”課題研討會上,得到了與會專家、老師、工程師等的一致好評。同時為了使學生更愛計算器程序設計,使計算器程序設計課程達到開設的目的,卡西歐(中國)貿易有限公司聯合多所高校、企業組織了工程計算器程序設計大賽,使專業人士和學生積極參與,促進了計算器程序的發展和改進,做到以教促學、以賽促學,最終達到以學促用的目的。但是,這其中也存在一定的不足之處,我們會在以后的實踐中不斷改進,以適應發展的需要。

參考文獻

[1]周擁軍.CASIO可編程計算器在土木工程教學中的應用實踐[J].昆明冶金高等??茖W校學報.2003,19(04):51-52.

[2]王中偉.卡西歐fx-5800P可編程與道路施工放樣程序[M].廣州:華南理工大學出版社,2011.

[3]高振玲.馬俊福.利用CASlO編程計算器進行圓曲線與緩和曲線交點坐標的精確計算[J].甘肅廣播電視大學學報,2012,22(03):45-47.

作者簡介

篇13

1 引言

匯編語言程序設計是基于具體硬件的編程語言,它從程序角度幫助學生認識計算機的工作原理和特點,是銜接計算機軟件和硬件的橋梁[1,2]。匯編語言程序設計對學生后續學習:“計算機組成原理”、“微機原理與接口技術”、“嵌入式系統”、“單片機技術”等課程有非常重要的作用[3]。因此,匯編語言程序設計并不因C++、JAVA等高級編程語言的出現而淘汰,依然是計算機專業的基礎核心課程。但一直以來,學生普遍認為匯編語言程序設計的學習較難,課程教學效果并不理想。本文針對匯編語言課程的特點,分析了在匯編語言教學中存在的一些問題,立足于培養高素質的創新型人才,將學習共同體引入匯編語言程序設計課程教學,構建基于共同體的學習環境、研究基于學習共同體的匯編語言程序設計課程的教學目標、教學方法、教學評價標準,提出了基于學習共同體的匯編語言程序設計教學模式,以提高匯編語言程序設計的教學效果。

2 匯編語言程序設計教學中存在的問題

根據以往的教學經驗,并結合我校的實際情況,分析匯編語言程序設計教學中存在的問題主要有如下幾個方面:

(1)匯編語言程序設計課程的語法比較嚴謹枯燥,程序的編寫和調試比較繁瑣,而且與計算機硬件具有高度相關性,因此學生入門較難[4,5]。匯編語言程序設計課程教學內容多,課堂教學時間少,現如今教師多采用多媒體教學方式,進度快,知識容量大,學生缺少思考和吸收的時間。

(2)程序設計是一種能力和技巧,匯編語言程序設計也不例外,因此需要理論和實踐緊密結合。而本課程一般開設在大學低年級,此時基礎課程任務比較重,學生分配到每門具體課程的時間和精力是非常有限的,因此學生很難有充分的時間,在理解理論知識的基礎上,經過大量的實踐來鍛煉自己獨立思考、分析問題、設計算法、編寫程序、解決問題的能力。

(3)目前的高等教育進入大眾化階段,學生人數眾多,匯編語言程序設計課程往往采用大班教學,教師很難有效控制教學過程,實現對學生的一對一指導,導致課堂上師生互動越來越少,學生被動學習,理論知識消化困難,實驗課編不出程序,越學越難,學生的自信心受到嚴重挫折,學習興趣自然消失殆盡。

因此如何有效利用有限的課堂教學時間,提高學生快速吸收和運用知識的能力,激發學生學習興趣,是?R編語言程序設計課程亟待解決的關鍵問題。

3 基于學習共同體的匯編語言程序設計教學模式

“興趣是最好的老師”,興趣對學生的學習有著神奇的驅動作用。如果學生對所學內容有足夠的興趣,就會產生強烈的探索欲望和飽滿的情緒,自發調動全部感官,積極、主動地參與到教學中去。因此在整個教學過程中必須以培養學生學習興趣為中心,變被動學習為主動學習。研究表明人的知識來源于教師講授的不到20%,而通過同他人的對話、溝通、協作獲取的超過80%,因此團隊協作型學習環境可以促進知識的吸收和獲取。“學習共同體”(learning community)是指將學習者組織成學習團隊,團隊內成員擁有共同的目標,相互協作,通過互相交流和溝通共同學習,共同完成學習任務[6-8]。學習共同體將傳統的獨立學習模式改為團隊學習模式,鼓勵團隊成員之間的交流和相互啟發,能夠有效調動學習者的學習興趣,激發學習者的學習主動性和積極性,變被動學習為主動學習,團隊成員之間共同學習、相互促進、共同提高。

本文將學習共同體引入匯編語言程序設計課程教學,構建基于共同體的學習環境、研究基于學習共同體的匯編語言程序設計課程的教學目標、教學方法、教學評價標準,以培養高素質的創新型人才。研究成果具有較強的推廣性和普適性,可望給本校及其他同類高校產生良好的指導與輻射作用。具體研究內容包括以下幾個方面:

(1)構建共同體學習環境。

在學習共同體的教學模式中,首先應該注意學生之間的個人差異,根據個性差異和學習能力建立學習共同體,將以往的學生獨立學習改為團隊協作學習,鼓勵小組成員之間的交流和相互啟發。需要注意的是,在建立學習共同體時,小組人數和分組方式應根據實際情況確定,因地制宜,不強調統一標準。其次在基于學習共同體的教學模式中,課堂教學以師生討論和交互的方式探索新知識,解決新問題,因此要求學生的課程?⒂攵冉細摺N?此,教師要幫助學生實現自我管理,提高學生自主學習效率,督促學生事先將教學基本內容通過自主學習的方式在課外完成。

(2)設定課程教學目標。

在基于學習共同體的教學模式下,課程教學的首要目標就是培養學生的學習興趣,激發學生的學習主動性和積極性,使學生變被動為主動,共同學習、相互促進、共同提高。目前的高等教育,學生越來越多樣化,在教學過程中,要尊重學生不同的學習方式、不同的價值取向和不同的學習結果。教師應根據學生的個性差異和學習能力分層次地制定學習目標,注重學生綜合能力的培養。

(3)改革課程教學方法。

傳統的教學模式中,課堂教學以教師講授為主?;趯W習共同體的教學模式,課堂教學以師生討論和交互的方式為主,要求學生的課程參與度較高。整個教學過程中必須以培養學生學習興趣為中心,課堂教學形式應該多樣化。學習任務要具有循序漸進性和挑戰性,注重知識的運用和能力的培養,因此在基于學習共同體的教學模式中,應當合理安排教學內容。此外,還需要根據教學內容不同階段的特點設計不同的教學方式,以便組織課堂上的討論與協作順利展開,例如在教學的初期,教師要多引導啟發,在教學的后期可以采用學生分組匯報或者小組討論等方式。

(4)制定合理教學評價標準。