匯編語言程序設計范文
時間:2023-03-16 10:26:37
導語:如何才能寫好一篇匯編語言程序設計,這就需要搜集整理更多的資料和文獻,歡迎閱讀由公務員之家整理的十篇范文,供你借鑒。
篇1
隨著我國國際化的發展進程越來越快,我國對高等院校教育水平的重視度也越來越高。為了加快接軌國際高等教育的進程,在近幾年中,我國對教育事業的投入力度不斷加強,提高了對學生實際動手能力以及創新能力的培養力度。《匯編語言程序設計》課程教學是高校計算機、通信、電子以及自動化等相關專業課程中的基礎課程,對學生在學習過程中的創新能力以及實踐能力的提高有一定的促進作用。另外,在對教師對問題進行研究的過程中,對提高其相應的科研水平以及意識也有一定的積極影響。
一、《匯編語言程序設計》課程教學的現狀以及存在的問題
1.相應的教材內容單一陳舊,無法激發學生的學習興趣
《匯編語言程序設計》課程在我國所有高等院校相關計算機專業的課程中都占有重要地位,然而隨著時代的飛速發展,計算機的相關配置也得到了相應的發展。在《匯編語言程序設計》教學中,其硬件教學中有些相關教材內容與計算機的發展現狀不相符,存在一定程度的滯后性。在某些新開發的匯編得到廣泛使用的時候,大多數學校的相關專業的匯編語言教材依舊還停留在以前的版本中,跟不上實際的發展進程。
2.沒有明確的教學目的,對課程重要性認識不足
《匯編語言程序設計》課程教學是高校計算機、通信、電子以及自動化等相關專業課程中的基礎課程,對學生在學習過程中的創新能力以及實踐能力的提高有一定的促進作用。在對《匯編語言程序設計》課程的學習過程中,大多時候得不到學生以及教師重視,對其學習的重要性認識不足。而且,大多數老師在對這門課程進行教學的過程中,受到相應教學的課時以及大綱限制,在課堂教學過程中過于偏重對具體指令的相關應用以及功能的講解,從而缺少了對各個課程之間的特點串聯。這樣的問題導致教師在教學過程中,對學生的學習興趣不能充分的調動,從而導致學生對正確的學習方法不能很好的掌握。
3.教學方法偏差,教學手段存在缺陷
在對《匯編語言程序設計》課程進行教學的過程中,其在相應的教學方法上存在一定程度的偏差,從而導致一些編程中非法指令經常性出現。而且,教師在對這門課程進行教學的過程中,教學手段太過單一,在教學過程中主要就通過多媒體對課堂內容進行講解。在教學過程中對多媒體的運用雖然存在直觀生動以及信息量大等相關優勢,但其也在一定程度上使學生產生了學習惰性。
二、對《匯編語言程序設計》課程教學中相應的問題進行改革
1.加強對課程重要性的認識
在對《匯編語言程序設計》課程進行教學之前,對其相應的重要性進行講解,從而使學生對匯編語言的具體特點進行充分掌握,對匯編語言相較于高級語言的具體優勢進行具體明確,使學生對其在應用領域中必要性有充分的了解。在對《匯編語言程序設計》課程進行學習的過程中,要注意對其實用性的具體教學,使學生能夠做到對具體知識的學以致用,注重對教學內容相關知識點的訓練和拓展。另外,教師在教學過程中,還要注重對學生知識面的拓寬,從而使學生在對匯編語言的學習興趣得到相應的提高。
2.采用多樣化教學,提高學生學習興趣
在對《匯編語言程序設計》課程進行學習的過程中,想要對相應的指令進行掌握,就要對其相關的尋址方式進行具體的理解和掌握。在對匯編語言進行教學的過程中,由于其相較高級語言而言,沒有足夠的易讀性,不容易學生的理解,所以,在教學的時候要掌握多樣化的教學方法以及教學手段,從而使學生在對其進行學習的過程中的學習興趣得到最大的提高,培養學生學習的自主性,使其對匯編語言的相關知識的理解和記憶更容易清晰地掌握。
3.增加實踐環節,提高學生具體的實踐能力
在對《匯編語言程序設計》課程進行學習的過程中,對學生具體動手實踐課程進行加強,使學生在具體實踐的過程中對教材上的知識點進行具體的理解和掌握。在實際動手過程中學習實踐理論,使實踐與理論達到很好的結合,從而提升學生的學習效果。其中,在實踐的過程中,教師要注意對具體實驗內容的控制,對實驗的重點著重突出,避免實驗的時間太過漫長。除此之外,還要注意積極引導學生多多參與相關實踐項目,在一定程度上為他們提供一些參與實際研究項目的機會。
三、結束語
綜上所述,隨著時代的飛速發展,我國對高等院校教育水平的重視度也越來越高,計算機的相關配置也得到了相應的發展。《匯編語言程序設計》課程作為計算機、通信、電子以及自動化等相關專業課程中的基礎課程,其硬件教學中有些相關教材內容與計算機的發展現狀不相符,存在一定程度的滯后性。為了提高學生在學習過程中的創新性以及實際動手能力,對《匯編語言程序設計》教學課程的教學效果進行相應的提高和改善,從而使學生在學習的過程中對其課程中相應的知識內容進行更清晰精準的掌握。
參考文獻:
[1]陳燕俐,許建.“匯編語言程序設計”課程教學改革探索 [J].中國電力教育,2012,10(04):193-194.
[2]李黎.《匯編語言程序設計》課程教學改革探究 [J].產業與科技論壇,2013,15(08):197-198.
[3]陶雪麗,郭鳳英.匯編語言程序設計課程教學改革與實踐 [J].中國教育技術裝備,2012,25(01):192-193.
篇2
關鍵詞:匯編語言;系統的知識結構;教學手段;實踐教學
中圖分類號:G642 文獻標識碼:B
“匯編語言程序設計”是計算機教學體系中一門必修的專業基礎核心課程。匯編語言可以直接控制計算機硬件,常用于設備驅動程序、實時控制程序等硬件設計開發等方面。在系統軟件的底層、大型軟件的性能優化、信息安全與計算機病毒的逆向工程等方面的應用上,匯編語言也具有其他高級語言所無法企及的優勢。該課程不僅是“計算機組成原理”、“操作系統”、“微機原理與接口”等核心課程的必要先修課,而且對于訓練學生掌握程序設計技巧、熟悉上機操作和程序調試技術有著重要作用。從教學的角度出發,我們認為只有激發學生的學習興趣,教師與學生互動,并采用一些有效的教學手段,才能夠收到事半功倍的效果。
1了解匯編語言的重要性
匯編語言具有與高級語言不同的特點,正是這些特點使得匯編語言具有高級語言不可替代的作用,使得匯編語言在計算機領域非常重要。在教學過程中,首先必須向學生詳細闡述匯編語言在計算機學科知識體系中的重要作用,充分調動學生的學習熱情和求知欲望。
匯編語言與處理器密切相關,每種處理器都有自己的指令系統,對應的匯編語言各不相同。所以,匯編語言程序的通用性、可移植性較差;匯編語言功能有限,又涉及寄存器、主存單元等硬件細節,所以編寫程序比較繁瑣,調試起來也比較困難。但是匯編語言本質上就是機器語言,是計算機提供給用戶的最快最有效的語言,因而容易產生運行速度快、指令序列短小的高效率目標程序,并且匯編語言是能夠利用計算機的所有硬件特性并能夠直接控制硬件的唯一語言,它可以直接、有效地控制計算機硬件。在很多場景下,我們必須使用匯編語言,例如,機器自檢、系統初始化、實際的輸入輸出設備的操作等;I/O接口電路的初始化程序以及外部設備的低層驅動程序等;計算機系統頻繁調用的子程序、動態連接庫等。匯編語言在現代計算機應用中仍然是一門不可替代的、非常重要的程序設計語言。
因此,在“匯編語言程序設計”教學中,我們首先讓學生充分認識到匯編語言的特點和重要性,學生通過用匯編語言編制程序,可以更清楚地了解計算機是如何完成各種復雜的工作。學生能從根本上認識、理解計算機的工作過程,從而充分地利用機器硬件的全部功能,發揮機器的長處。
2形成系統的知識結構
匯編語言離不開具體的CPU結構以及必要的硬件支持,由于我們的“匯編語言程序設計”課程仍然基于英特爾公司的8086/8088CPU,因此將英特爾公司的系列CPU發展歷史作為首先介紹的內容。從英特爾公司的4位機4004,8位機8008、8080與8085,到16位機8086/8088微處理器,詳細介紹了它們的內外總線結構。對于16位的80286微處理器,我們重點介紹了80286的實模式與保護模式兩種操作模式。對于32位的80386微處理器以及隨后英特爾公司推出的80486,Pentium,MMX Pentium,Pentium Pro,Pentium II,Pentium III與Pentium 4等微處理器,介紹了這些微處理器在硬件結構上的突破,以及什么原因讓這些CPU新增了若干專用指令。通過對英特爾系列處理器的介紹,學生對以英特爾系列處理器發展為代表的計算機硬件發展脈絡有總體的了解,初步建立起計算機技術繼承性、發展性的認識,對其中涉及到的相關概念和術語有了初步的了解。
匯編語言的一個重要特點是它起到了軟件技術與硬件技術的接口作用,這決定了匯編語言程序設計必須結合其他課程橫向學習。從剖析可執行程序的結構出發,以可執行程序的裝入為例,分析了DOS操作系統下的PSP段前綴,并簡單介紹了Windows操作系統下的PE文件,并在此基礎上講解了計算機從啟動到操作系統裝入的流程;在講解中斷的時候,給學生介紹了8259A的結構與用法。通過這種方式,讓學生明白“匯編語言程序設計”與“操作系統”、“微型計算機接口技術”、“計算機組成原理”等課程的聯系,開闊了學生的思維方式與學習方法。
緩沖區溢出漏洞是目前最主要的安全漏洞之一,而利用該漏洞的緩沖區溢出攻擊是目前最主要、最具威脅性的網絡攻擊之一。我們幫助學生利用DEBUG工具,詳細分析了這些具有威脅性的程序,讓學生從多個角度研究緩沖區溢出的一般規律,引導學生深入分析植入代碼的結構組成,總結植入代碼的結構特征。并鼓勵學生根據威脅代碼的特點,嘗試提出相對應的防御措施。為“網絡安全”等課程打下了基礎,讓學生融會貫通,學以致用。
通過我們這種注重歷史發展與聯系其他課程的教學思想,逐步幫助學生形成了系統的知識結構。這有助于學生建立多門課程之間的聯系,開闊學生的專業視野,從而調動學生的學習熱情,增強學習的積極性與主動性。
3利用多種教學手段進行教學
匯編語言的內容多而雜,不便于記憶,要教給學生正確的學習方法,指導學生如何去學習。讓啟發式、開放型的教學貫穿教學全過程,充分調動學生學習的積極性和主動性,以利于學生對教學內容的理解和掌握。在教學內容的講解過程中,針對不同的知識點,可采用或結合不同的教學方法,加深學生的理解,增強記憶。
在介紹英特爾系列的CPU歷史時,我們準備了大量直觀的照片,展示了從4004、8008、8080、8085到16位微處理器8086/8088等微處理器,對于32位機展示了從80386到80486、Pentium、MMX Pentium、Pentium Pro、Pentium II、Pentium III與Pentium 4等微處理器。為了讓學生對當前的計算機有直觀的認識,我們用照片展示了當前計算機的主板結構,對照圖片逐一介紹了PCI接口、顯卡、網卡等各種插卡。學生們對直觀的學習非常有興趣,課堂氣氛活躍。
在講解指令系統時,我們使用動畫講解了指令在CPU中的執行過程。在講解指令前,我們重點介紹了8086 內部結構,仔細講解了各個部件的功能,并突出介紹了指令流水線方式。對于典型的指令,我們在結構圖上演示了指令執行過程,包括指令隊列的變化、指令操作數的來源、物理地址的形成、EU與BIU是如何配合工作的。通過直觀的動畫,學生基本理解了CPU中指令的執行過程。
在講解MOV指令時,我們采用圖解法講解了MOV指令操作數的來源,這非常利于學生理解與記憶MOV指令的操作數的來源。圖1中矩形框中表示MOV指令的操作數,箭頭的起始點表示MOV指令的源操作數,箭頭的終止點表示它的目的操作數,兩者間如有箭頭連接,表示它們是MOV指令源操作數與目的操作數的允許組合方式。通過圖解法,學生普遍感到MOV指令的操作數來源好懂易記,并逐步推廣到其他的指令學習中。
在講解存儲器操作數的尋址方式時,我們采用逐步分解的方式介紹存儲器操作數的四種尋址,并強調了基址、變址、位移量這三個分量的不同組合就形成了不同的尋址方式。8086/8088 CPU各指令中操作數的來源有四種,立即數操作數、寄存器操作數、輸入/輸出端口操作數、存儲器操作數。而存儲器操作數又有直接尋址、寄存器間接尋址、基址(變址)尋址、基址變址四種尋址方式,存儲器操作數的這些尋址方式易導致學生理解與記憶出錯,造成不佳的學習效果。在講述基址由BX或BP提供,變址SI或DI提供,位移量是一個在匯編期間的常數后,我們在圖2中介紹了基址、變址、位移量這三個分量的不同組合構成的不同的尋址方式。通過這種逐步分解的方式,學生很容易就掌握了存儲器操作數的四種尋址方式。
從我們采取的多種教學手段收到的良好效果可見,在教學過程中,靈活應用各種教學方法,能夠減少學習匯編語言的難度,便于學生學習和掌握相關內容,提高教與學的效率。
4重視實踐教學
上機實驗是“匯編語言程序設計”的一個重要教學環節。在“匯編語言程序設計”實驗中,針對學生對DOS操作環境不熟悉,我們在課堂上重點講授了相關的DOS命令,使得學生在上機時能夠熟練的在DOS環境下進行操作;針對匯編語言上機調試復雜的問題,我們通過耐心講解,讓學生充分認識到,這是一個從源程序到可執行程序的必經過程,通過學生的反復實踐,一定能夠掌握匯編語言的開發過程,加深對匯編語言的認識,提高程序設計的能力;針對調試工具DEBUG,重點講解了常用的調試命令,對一些較復雜并且較為不常用的命令,暫時不引入,重點讓學生實踐,學生通過使用DEBUG工具,深刻體會到了CPU的工作過程,這對于提高學生的學習興趣,鞏固課堂教學內容起到了關鍵作用。
在合理安排實驗教學內容的基礎上,我們還將課外科技活動融入到實踐教學活動中,其中最為重要的是組織學生參加國家級以及校級的各種電子設計競賽,在實踐中鍛煉學生使用匯編語言設計程序的能力。
我們積極指導學生使用匯編語言參加了全國性的關于嵌入式系統的“電子設計競賽”,這些競賽項目不但需要參賽者具有深厚的匯編語言程序編程水平,還要求參賽者擁有過硬的硬件基礎知識,包括電路分析、模擬電路和數字電路等各方面的專業知識儲備。通過競賽,學生加深了對整個計算機學科知識體系的掌握,并對匯編語言與其它學科的關系有了深入的認識。
我們還組織了較大規模的學生隊伍參加電子科技大學“億利達杯”、“NS杯”等大學生電子設計競賽,這些競賽是半開放式的競賽,在指導教師的指導下,參賽隊員利用提供的器件設計并實現了“數字式Q表設計”、“多點溫度檢測系統設計”、“數字調諧濾波器設計”、“工頻標準信號源設計”、“電機轉速控制器設計”、“太陽能自動跟蹤器設計”、“數字溫度表”、“數控電源”、“遙控小車”、“防嘯叫話筒”、“智能LED照明”等多個項目。在這個實踐過程中,鍛煉了學生使用匯編語言與硬件結合的能力,加深理解了匯編語言在控制系統中的作用,培養了學生的創新能力。
5總結
“匯編語言程序設計”是我國高等學校計算機各專業必修的一門主干課程,對于訓練學生掌握程序設計方法與技術,從事自主版權計算機芯片設計和系統軟件的開發,以及在信息安全、過程控制等多方面的應用,均具有十分重要的作用。由于“匯編語言程序設計”課程自身的特點,學生在學習的過程中總會遇到這樣或那樣的問題。我們在教學過程中積極主動總結,認真分析學生遇到問題的根本原因,及時幫助學生對問題逐一加以解決。
從我們長期從事“匯編語言程序設計”的教學經驗來看,教師要善于采用多種方法及手段,發掘學生渴望新知識、接受能力強的潛能,讓學生從了解匯編語言的重要性入手,培養學生的興趣,進而幫助學生形成系統的知識結構,并在教學中靈活運用多種教學手段,最終通過實踐教學,使學生達到熟練掌握“匯編語言程序設計”的目的。
參考文獻:
[1] 王正智. 8086/8088宏匯編語言程序設計教程[M]. 北京:電子工業出版社,2002.
[2] 沈美明. IBM-PC匯編語言程序設計[M]. 北京:清華大學出版社,2001.
[3] 殷肖川. 匯編語言程序設計[M]. 北京:清華大學出版社,2005.
[4] Peter Abel. IBM PC匯編語言程序設計(影印)[M]. 北京:清華大學出版社,2006.
[5] Mazidi, Muhammad Ali. 80x86 IBM PC及兼容計算機(卷1和2),匯編語言、設計與接口技術(影印)[M]. 北京:清華大學出版社,2004.
[6] 張英彥. 更新知識觀念改革高校教學[J]. 中國高教研究,2006(2):70-71.
篇3
關鍵詞:匯編語言程序設計;實驗;教學改革
中圖分類號:G64 文獻標識碼:A
文章編號:1672-5913(2007)01-0034-04
在傳統教學模式中,理論教學 (或者說是課堂教學) 與實驗教學是區別對待的,后者通常用來“輔助”前者 (例如實驗教材歷來被認為是輔助教材) ,學生通過實驗教學環節來“驗證”理論教學的內容。但是,在大眾化高等教育的背景下,課堂教學的效果普遍出現滑坡,導致淡化了“驗證性”實驗的基礎,因而嚴重地影響了課程的教學質量。
近年來,我們在多門計算機課程的教學實踐中,摸索出一套“把實驗實踐環節與理論教學相融合,抓實驗實踐教學促進學科理論知識學習”的教學方法,有效地提高了學生的學習興趣,以此提高了大眾化高等教育背景下計算機專業課程的教學效果和教學質量。本文中,我們結合“匯編語言程序設計”課程的實驗創新,來探討新的教育形勢下計算機課程教學方法的改革。
1匯編語言及其教學的現狀
計算機中真正可以處理的只是由“0”和“1”組成的二進制代碼,這種指令代碼易出錯且不易修改。于是,人們發明了“指令的助記符”,用幾個字母 (往往就是其含義的英文單詞或縮寫) 來代替某條指令,如加法用ADD表示,減法用SUB表示等,這種符號系統最終擴大形成了匯編語言。匯編語言就是機器語言的一種可以被人讀懂的形式,只不過它更容易記憶。使用匯編語言編程,優點是運行效率高,可直接對硬件內部進行控制,缺點是使用者需要對硬件有更深入的了解,編程效率不高,并且匯編語言與機器的體系結構有一定的依賴關系,每種計算機都有自己的匯編語言,使用極不方便。
匯編語言易學卻很難真正掌握,編寫快速、高效,并且能夠讓計算機處理器“舒服地執行”的匯編語言程序是一件很困難的事情。由于教師開展教學困難,學生學習和掌握困難,教學效果很差,以至于不少學校甚至取消了這門課程。
盡管與發展初期相比,計算機開發和應用技術已經有了根本性的變化,我們有了各種高級語言、我們有了網絡應用開發的許多編程工具,很多程序甚至可以自動生成,但機器語言、匯編語言和高級語言的程序設計語言體系仍然是計算機技術的基礎,也是計算機技術的重要知識體系之一。對于計算機及其相關專業的學生以及喜歡計算機的一般學生和讀者來說,匯編語言程序設計肯定是需要掌握的重要專業基礎知識之一。不能了解和熟悉匯編語言知識不僅將導致學生知識結構的缺乏,也可能導致學生認知水平的降低、開發手段的貧乏。在一些應用中,匯編語言甚至是其開發工具的唯一選擇。
匯編語言是機器語言之外最接近計算機硬件的編程語言。由于它如此地接近計算機硬件,因此,它可以最大限度地發揮計算機硬件的性能。用匯編語言編寫的程序的速度通常要比高級語言(例如C/C++),快很多倍,甚至成百上千倍。選擇匯編,意味著選擇性能而不是可移植或便于調試。在一些實際的應用系統中,我們往往會用匯編徹底重寫某些經常調用的部分以期獲得更高的性能。應用匯編也許不能提高程序的穩定性,但至少它也不會降低穩定性;與此同時,它可以大大地提高程序的運行速度。至少,匯編語言的知識可以告訴你一些有用的東西,比如,你有多少個寄存器可以使用。有時,手工的優化比編譯器的優化更為有效,而且,你可以完全控制程序的實際行為。
“匯編語言程序設計”課程的任務是為“計算機原理”、“計算機接口技術”、“操作系統原理”等后繼課程提供必要的基礎知識,它對訓練學生掌握程序設計技術、熟悉上機操作和程序調試技術都有重要作用,為從事計算機的應用開發提供了強有力的編程工具。
通過學習匯編語言,學生可以了解到如何有效地設計數據結構,讓計算機處理得更快,并使用更少的存儲空間;同時,學習匯編語言可以讓學生熟悉計算機內部運行機制,并有效地提高調試能力。經驗表明,調試一個非結構化程序的困難程度,要比調試一個結構化程序的難度高很多,因為“結構化”是以犧牲運行效率來提高可讀性與可調試性的,這對于完成一般軟件工程的編碼階段是非常必要的。然而,在一些地方,比如,硬件驅動程序、操作系統底層,或者程序中經常需要執行的代碼,結構化程序設計的這些優點有時就會被它的低效率所抹煞。另外,如果你想真正地控制自己的程序,只知道源代碼級的調試是遠遠不夠的。
通常情況下,“匯編語言程序設計”課程的教師必須決定其課程是集中于問題和理論,還是為學生提供一個能夠對匯編語言程序設計進行實驗的環境。“匯編語言程序設計”課程本身具有的理論抽象性和鮮明的應用性,決定了我們必須充分重視這門課程的實踐環節。
2教學內容的分層次設計
教育部計算機科學與技術專業教學指導分委員會在其的“中國計算機本科專業發展戰略研究報告”中指出:大多數院校都有比較完善的教學大綱、教學計劃和進度表、教學檔案等,實踐著一套有效的管理規范。但同時教學內容的研究則需要加強。報告進一步指出:
1) 有些學校計算機專業的教學內容設計存在明顯的盲目性,還有些學校在培養人才定位上有明顯偏差。盡管CC1991開創了一種對計算機科學教育的創造性的、理性的思考,但它并不應該成為我國所有大學計算機專業教學實踐所共同追求的目標。
2) 作為一種比較普遍的規律或者現象,學生就業通常會有較強的地域性:一個企業通常在周邊地區招收較多員工,一個學校的畢業生大都就業在學校周邊地區的單位。因此,學校周邊地區社會發展的情況對計算機專業的教學內容的設計應該是很有參考意義的。
……
由于大多數大專院校一般都設置有計算機科學技術及其相關專業,我們至少可以認為:根據所在院校的辦學類型不同、培養目標不同、所在地及其周邊地區社會需求的不同,這些計算機專業的教學內容應該有所不同,這些計算機專業對于“匯編語言程序設計”這門課程的教學內容也應該是有所不同的。對于那些非研究型院校的相關專業,對“匯編語言程序設計”的教學可以集中在適度的理論知識和充分的操作實踐上,通過實驗與實踐,了解匯編語言程序設計的基本概念和知識,激發對相關理論知識的學習興趣,理解和掌握匯編語言程序設計的基本方法。
匯編語言程序設計的應用面廣,涉及技術領域寬泛,要讓學生真正理解匯編語言程序設計的基礎理論知識,具備將匯編語言技術應用于社會實踐的能力,積極加強匯編語言程序設計課程的實驗環節是至關重要的。
篇4
關鍵詞:匯編語言;C語言;混合編程
匯編語言的優勢就是速度快,占用存儲空間不大,而且可以隨時控制硬件,這些優點是其它的程序語言無法取代的。匯編語言也有不足之處,就是在高級程序的編寫與調試時存在著較大的困難,特別是在處理一些數據或者一些混合運算時顯得更加困難。
C語言,它的優勢就是在于功能全面,表達形式多樣且靈活,開發使用效率很高,具有其它高級語言無法具有的優勢。通常在軟件開發過程中,大部分程序采用高級語言編寫,以提高程序的開發效率;但在要求執行速度快、占用空間少或要求直接控制硬件的場合,則利用匯編語言編寫,以提高程序的運行效率。
1.匯編語言和C語言混合編程的方法
C語言和匯編語言混合編程的具體方法有以下幾種。
2.1 參數傳遞
匯編語言程序和C語言程序在調用時會涉及到參數傳遞,一般采用堆棧進行傳遞。在匯編語言中將BP作為基址寄存器,調用程序先將來自于C語言程序中的參數依次壓入堆棧中,然后當需要使用這些參數時,再用BP加上不同的偏移量依次對堆棧中的數據進行存取操作。
2.2 調用關系的確定
對于將要涉及到調用的過程或函數需要事先說明和建立調用與被調用關系。被調用的過程或函數應預先說明為外部類型,以便被外部模塊引用,而調用程序也需要在程序中說明將要引用的外部模塊的名稱。在說明調用關系時還應根據不同的存儲模式確定相應的匯編語言格式。C程序小模式對應匯編程序的近類型過程,而C程序大模式則對應匯 編程序的遠類型過程。
總而言之,匯編語言和C語言的混合編程方法可以使匯編語言與C語言之間取長補短,充分發揮各自優勢,相互交叉調用,進行參數傳遞,共享數據信息和數據結構,使由此開發的軟件更實用、更安全可靠,使開發和編程工作達到事半功倍的效果。
參考文獻:
[1] 羅南超,向昌成,李唐輝. 匯編語言實現多種進制的通用輸入輸出[J]電腦知識與技術, 2008,(36) .
[2] 崔衛東. VC++與匯編語言混合編程的研究與實現[J]福建電腦, 2007,(05) .
[3] 宋金華. 匯編語言和C語言在圖形處理中的綜合應用[J]湖北廣播電視大學學報, 2010,(12) .
篇5
一、多層次多目標的教學要求
過去,我國的普通高等教育基本上分為本科生教育與專科生教育兩個層次,對這兩個層次教育部有統一的標準和要求,各大學在貫徹實施過程中相對比較穩定。改革開放以來,為盡快適應新經濟快速增長對各類高等專門技術人才的需求,從20世紀80年代初期開始教育部先后升格了一批院校并批準新成立了一批大專院校,特別是20世紀90年代各大學普遍擴招后,我國的大專院校事實上已經打破了兩個相對穩定層次的格局而形成多層次教育的局面,本科院校中新學院新專業建設及專科層次的職業技術教育,專科院校中本科層次的教育和職業技術教育,中等專業技術學校中的高等職業技術教育等等,同一專業的教學起點教學大綱教學計劃相去甚遠,教學目標和要求事實上也很不一致,課程合并,教材改革,雖然確實涌現出許多優秀品牌“精品課程”和“規劃教材”,但眾多的“精品課程”和“規劃教材”也是千差萬別,更加加劇了培養目標的多樣化。
形成這樣一種多層次多目標的教學形勢對不對,好不好呢?不少人對此頗具微詞。筆者認為這種教學勢態的形成其實是很正常的,教育永遠是服務于經濟建設需要的,這種教學勢態的形成正好說明了這一點。經濟建設需要多層次多能力多類型的人才,教學部門就要培養出各種層次各種類型各種能力的人才,市場細分之后,人才也需要細分,專業也需要細分,培養的“寬基礎”“萬金油”“什么都能干什么都干不好”的人才漸失市場之后,一定要有新的“專門化”“專業化”“與企業零接軌”的人才培養方式。這就是目前多層次多目標教育的現實情況,任何教育觀念和教育方法都不能脫離開這一現實。
二、“學用互動,實踐為先”的教育觀念和教學方法
當我國的普通高等教育從傳統單一的教學模式走向多層次多目標培養方式后,教學對象中出現了一大批以職業技能訓練為主直接面向企業一線的高職學生,這些學生的共同特點是基礎理論知識不扎實,在中學沒有養成良好的學習習慣,課堂上自控能力較差,注意力分散,但他們普遍身體素質較好,思維活躍,善于交流,上大學后有一種時間緊迫感,希望將過去失去的補回來,學習熱情與積極性非常高。對于這部分學生,若仍然按照傳統的教學模式先理論后實驗按章就節地進行教學,筆者發現很難保證大多數同學正常完成教學計劃,而且很容易造成班里同學兩極分化。少數學習較好的同學總感到課程內容不夠學,而大多數同學則感到較為吃力。首先對理論教學感到仿佛又回到從前一樣,其次對單調的純驗證性質的實驗無論做出或做不出都不是積極主動地想方設法完成,而是像抄作業一樣敷衍了事,久而久之失去學習興趣,導致人生坐標的盲然,不能有效地利用大學這一段人生經歷中最為寶貴的時光。針對這一大類學生的實際情況,什么樣的教學方法才能將他們的學習熱情調動起來?
筆者嘗試過許多方法,如采用案例教學法由淺入深地講解難點重點課,調整授課課序、刪繁就簡講解理論核心課,整合零散實驗為項目實驗提高實驗興趣,增加專用實驗設備提高實驗效率,雖然所有這些方法的應用對課程的改進都有所幫助,但效果平平,與改進付出的代價相比,回報實在是太有限了!難道計算機課程的教學只能如此嗎?有沒有更好的解決這一問題的方法?怎樣才能改變被動教學為主動教學?回到經典的教學理論中尋求答案:學習過程中,學生是主體,教師是主導,只有把學生的主動性調動起來,教師才能起到導的作用,因此必須想盡一切辦法調動學生的積極性。筆者分析學生不主動的原因主要是直接看不到課程內容的用途,實驗課程中的成就感不強。如何增強這兩方面的意識呢?筆者想到了產品。并在普遍認為“學生難學,教師難教”的“匯編語言程序設計”課程中進行試驗,結果獲得了意想不到的效果,真有“柳岸花明又一村”的感覺。筆者將這種方法總結為“學用互動,實踐為先”的教育觀念和“實踐理論實驗實踐理論實驗……”的教學模式。所謂學用互動,就是邊學邊用,學點用點;所謂實踐為先,就是先進行操作實踐,籍以建立問題,再通過理論課與實驗課理解和解決問題,在整個教學環節中,增加了實踐課的教學。那么什么是實踐課呢?實踐課與實驗課有何區別?實踐課能否代替實驗課?增加實踐課后給教學帶來了哪些新問題?如何處理這些新問題?下面是筆者的一些體會和認識。
在“實踐理論實驗實踐理論實驗……”的教學模式中,實踐課開在理論課與實驗課之前,特別是第一節課,學生在對課程一無所知的情況下實踐什么。這實際上就是如何理解實踐課的問題。在開實踐課之前,教師必須精心策劃實踐課的內容,實踐就是實例操作,就是實際應用,這種操作首先是與待講課程內容緊密相關,其次是操作應該簡單易行,再就是操作確能激發學生興趣。對于計算機類課程,任何半成品都不能完成正常的操作功能,而太復雜的成品對教學也不合適,選擇合適教學的產品是非常重要的。經過一個學期的學習,學生能夠在不斷的實踐課程中反復操作、應用、模仿、制造、創新出一個力所能及的計算機產品,這就是實踐課的主要內容和任務。
實踐課與實驗課的區別何在?眾所周知,實驗課是“驗證”性質的,通過重復操作事先設計好的一個有序步驟,驗證課堂所講內容的正確性,非常致命的是這種驗證往往是片斷性質的,無論教師還是學生要將所有的片斷有機組成一個整體的概念其實真不是件容易的事。另外,實驗僅需要部分與課程本身相關的知識,而實踐需要的是更加廣泛的知識,實驗的結果是單一的,單一的結果能提高學生的學習興趣嗎?實踐的結果是多變的,夾雜著同學之間與教師之間相同的和不同的理解。實驗課一般不含產品設計、產品制造的概念,因而仍然與實際應用脫離較遠,實踐課通過模仿與創新努力制造一個產品,直接應用于實際。
實踐課能否代替實驗課?不能。實驗課緊密聯系本課程本單元的教學內容,經過精心設計的實驗課程,易于學生在短時間內對所學知識點進行驗證,缺點是知識點孤立,不易與相關知識點發生聯系,而孤立的知識點很難完善地與實際情況聯系起來,造成理論脫離實際的尷尬教學局面,因而“教者難教,空洞無物”,“學者難學,不知用處”。用實踐課的方法來彌補實驗課的這一缺陷,使教者有實例,學者直接看到知識點的用途,就會營造出“教者并非是從書本到書本,而是直接從書本到實際”,“學者并非是簡單的完成作業,而是要聯系實際解決問題”的生動活潑的教學氣氛。學者主動了,自然就會“教者易教,學者易學”了,而這正好解決了我們目前教學中存在的問題。
增加實踐課后帶來的問題:實踐、講授與實驗課時比例如何分配?教學課時是否需要增加?與本課程相關的前驅課程和后繼課程有何變化?實踐課中輔助知識點怎么提供?課程整個進程中實例怎么安排?諸如此類的問題還有許多,但最關鍵的還是要具體課程具體對象具體分析。一般來說,基礎課不需要安排實踐課,專業基礎課可少量安排一些實踐課,專業課則應該有比較多的實踐課。教學課時應該作調整,但總課時不會增加。前驅與后繼課程基本上不需要變動,重復的實踐課程要有深度變化。輔助知識點有些是已經學過的,有些是待學的,有些是在校期間不可能在課程中學到的,它們主要由輔導教師提供給學生,同時也鼓勵學生自己通過資料解決。提供的實例不能偏離課程太遠,不能太難太大,實例可以是一個,也可以是多個,可以是從頭到尾完成一個完整的產品,也可以是做某個新產品的某一部分或一個環節。
三、在“匯編語言程序設計”課程中的運用
在各門計算機課程中,“匯編語言程序設計”是最令所有的教師和學生頭疼的一門課程,為什么會這樣?我們分析主要有以下幾個原因。
1. 對“匯編語言程序設計”課程的難度認識不足
在學習“匯編語言程序設計”課程之前,學生往往會憑借學習“C/C++高級語言程序設計”課程的經驗類比“匯編語言程序設計”,誤以為重點在于掌握匯編指令功能與格式進而用它們組合出典型的程序結構,部分同學甚至會努力尋找和理解匯編“語句”,結果在課程一開始接觸計算機原理的部分內容時總是經歷一段由漫不經心到盲然無策的過程,之后剛進入狀態又被接口驅動打得昏昏沉沉,整個的學習過程亦常痛苦。殊不知“匯編語言程序設計”雖然也是“程序設計”,但與“高級語言程序設計”是完全不同的“程序設計”,其不同之處在于“高級語言程序設計”是真正獨立的語言,而“匯編語言程序設計”是非獨立語言,必須結合具體機型才有意義。也就是說,學習“高級語言程序設計”不學習計算機硬件結構也可進行,而學習“匯編語言程序設計”必須首先了解計算機硬件結構,而且不是一般性了解,對這一點認識不足是直接導致“匯編語言程序設計”課程失敗的主要原因。
2. 開課的課序有問題
通常認為學習“軟件”類課程所需的基礎知識來源較為廣泛,而“硬件”類課程所需的基礎知識則較專業,因此大多數院校都將“匯編語言程序設計”課程作為“計算機原理”課程的前導課程,但事實上業內人士都十分清楚這兩門課程彼此相依的親密關系,因此筆者在講述“匯編語言程序設計”課程相關計算機原理部分的知識時從不以夠用為度,而是盡力講到位,只有這樣,“匯編語言程序設計”課程才能順利進行。
3. 教學方法需要改變
歷來的“匯編語言程序設計”課程采用“理論實驗理論實驗……”的教學模式,學生被動地接受并片斷性地運用所學知識解決實際問題,綜合運用所掌握知識和技能分析解決問題的能力得不到鍛煉,使課程陷入“就事論事”的尷尬局面,改變這種情況可采用各種辦法,改變現在的教學方法也是非常值得探討的辦法之一。
4. 實驗條件
歷來的“匯編語言程序設計”課程均以80X86系列芯片作為核心硬件模型并以此模型進行各種實驗操作,這種實驗條件存在幾個明顯的不足:實驗項目確定,學生可發揮性受到制約;需要專門的實驗室環境,限定了學生的實驗時間;所有實驗項目與實際應用都偏離較遠,不利于培養學生解決實際問題的能力。無疑這種實驗條件是需要改變的,但如何改變呢?
5. 學無所用,學生學習積極性不高
由于“匯編語言程序設計”課程中沒有頗具說服力的實例擺在學生面前,因此“匯編語言是計算機技術的重要知識體系”、“匯編語言是快速、高效的程序設計語言”、“匯編語言是在實際工作中應用極其廣泛的語言”等等說教就成為不被學生認可的空話,從而一開始便抑制了學生學習“匯編語言程序設計”課程的積極性。
面對上述一些問題,筆者在“匯編語言程序設計”課程教學中運用了“實踐理論實驗實踐理論實驗……”的教學模式,采用凌陽十六位單片機SPCE061A作為硬件實驗模型,精心組織了一學期的“匯編語言程序設計”實踐課程,結合以往的教學慣例,比較有效地調動了學生學習“匯編”的興趣。筆者在實踐課中的具體做法是:
將一些有代表性的應用匯編語言的產品和往屆生的作品通過參觀、講解、解剖、試玩等方法介紹給學生,如聲控玩具汽車、機器人、報時鐘、復讀機、電梯模型等,然后給學生提出課程的任務和要求,如必須獨立或合作完成一個作品,從開始計劃到中間實施步驟到最后完成調試,之后學生的每一次實踐課都按既定計劃執行,實踐課程中與匯編相關的問題由學生通過課堂教學和實驗課解決,輔助知識由任課教師和輔導教師幫助解決。借助于實踐課,解決了“匯編語言程序設計”課程中“軟”“硬”結合、條件不充分、學無興趣等諸多問題,學習實效大大提高。
篇6
關鍵詞: C 語言;匯編語言;混合編程
中圖分類號:TP313 文獻標識碼:A 文章編號:1006-4311(2014)24-0231-02
0 引言
匯編語言是一種面向機器的語言,其優點是運行速度快,占用存儲空間小,可直接對硬件進行控制。缺點是編寫、調試困難、移植性差。C語言簡潔、靈活、庫函數豐富、調試方便、移植性好,目前已被廣泛地應用于系統軟件和應用軟件的開發中,為了發揮各自優勢,取長補短,采用混合編程。大部分程序,如界面、人機接口(外殼程序)、數據處理等用C語言編寫,以提高程序的開發效率。而某些程序,如需要縮短程序的運行時間,或需要對硬件進行直接操作,或需要利用操作系統的某些功能模塊,或頻繁使用的程序、或需要占用內存空間少的程序(內核程序),則用匯編編寫,以提高程序的運行效率。
1 嵌入式匯編
嵌入式匯編也稱行內匯編,源程序中直接插入匯編語句。匯編語句可直接訪問C程序中定義的常量、變量、函數。不必考慮二者之間的接口,方便編程。
1.1 嵌入式匯編語句的格式
格式:asm操作碼 操作數[;或換行]
其中:操作數可以是匯編語句中的立即數、寄存器、表達式等還可以是C中的常量、變量、標號等。分號;是匯編語句結束符,并非注解,要用注解,用C的注解。如下例
所示。
1.2 匯編語句訪問C的數據
嵌入的匯編語句可以訪問C語言程序中的任何標識符,包括變量、常量、標號、函數名、寄存器變量、函數參數等。如下例所示。
1.3 匯編語言與C語言接口規則
1.4 編譯過程
命令行鍵入命令:TCC-B-Iinclude-Llib 文件名.c即可. TCC會自動調用TASM.EXE和TLINK.EXE,并且TLINK.EXE能正確的找到需要的.obj和.lib文件,要保證TC目錄下存在TASM.EXE文件。如果單步編譯,可能會碰到很多的問題,主要是TLINK.EXE不會自己去找.obj和.lib文件。該命令的功能是:.C編譯TCC.ASM匯編TASM.OBJ連接TLINK.EXE。
2 Turbo C模塊連接方式
C、匯編程序各自編程,各自編譯,然后連接在一起。
2.1 匯編語言與C語言接口規則
①命名約定:匯編的名字前加一個下劃線,C的名字前不加下劃線(編譯后內部自動加),以確保兩個模塊內部名字一致。
3 結語
混合編程,主要涉及接口,匯編調C的函數、全局變量。C調匯編的函數、變量。本文對此做了淺述。
參考文獻:
[1]譚浩強.C語言程序設計[M].清華大學出版社,2004.
篇7
關鍵詞:匯編語言;課程;教學;學時
中圖分類號:G642文獻標識碼:A文章編號:1009-3044(2012)22-5414-02
Focus on the Difficulty of the Assembly Language Teaching, and Improve the Teaching Effect
ZHANG You-wei, WANG Yong-hong, SI Bin-bin, MA Deng-wei
(Information Engineering University, Zhengzhou 450052, China)
Abstract: The assembly language is a very important major basic courses of computer science, but its closely combination with the hardware and the shortening of the teaching time, lead to some difficulties for teaching this course. This paper analyzes the reason for the difficulty of the course teaching, and also search for feasible ways to improve the teaching effectiveness.
Key words: assembly language; course; teaching effectiveness; teaching hours
“匯編語言”是計算機專業學員必修的一門專業基礎課程,對培養學員程序設計能力,理解計算機工作原理,從事底層軟件開發和軟硬件結合的項目開發均具有非常重要的應用。但是,這門課程又是學員感到比較難學的一門課程,習慣了采用面向對象或結構化程序設計思想的高級語言程序設計方法,對匯編語言這種偏“機器化”的低級語言編程方法,學員們一時難以理解和接受,再加上有較多的語法規則和指令尋址方式需要記憶,語言編程環境又不熟練,使得學員在一開始學習時便陷入茫然狀態。因此,就本門課程如何提高教學質量,增強教學效果,提高學員在一些底層軟件和軟硬結合方面的編程能力,是一個值得重視的問題。該文結合作者過去幾年的教學實踐,就目前計算機專業匯編語言教學學時壓縮到了40學時,我們總結了一些可行的、比較好的方法。
1匯編語言教學難點分析
1.1指令系統復雜
匯編語言的指令是用一些具有相應含義的助記符來表達的,雖然有助于記憶,但是一般處理器的指令集少則幾十條多則上百條,所有這些指令要在幾節課內全部講完,要求學員在這么短的時間內準確記憶這么多條指令幾乎是不可能的,更不用說讓其理解了。可如果指令掌握得不夠好,學員對大部分指令都感到陌生,在進行程序設計時就會感到無從下手,甚至讀程序時也會覺得“云里霧里”,不理解程序的含義。這就猶如寫作文一樣,基本的語法不會,造句不成型,豈能寫出好的文章?
1.2教學時間縮短
計算機專業的課程更新速度快,隨著新知識的不斷涌入,不可避免要開設一些新的課程。例如:幾年前我們計算機專業還沒有開設Linux操作系統、嵌入式軟件開發,網絡新技術、Oralc數據庫等課程,現在則新增加了這些課程,需要安排相當的教學學時。而對于一些象匯編語言這樣的基礎課程又不能丟掉,所以只能縮短課程教學學時。這使得教員只能講授前面章節中的硬件基礎和指令這些比較枯燥的內容,而許多比較有意義并且能讓學員產生學習熱情的內容被刪除了,比如:圖像顏色和動畫程序設計的教學內容。同時隨著實驗學時的減少,造成學員往往只能做一些非常基礎性的實驗,而一些能讓學員有“成就感”的實驗,如定時發聲、動畫顯示等實驗已經沒有時間安排了。這些均造成學員覺得這門課枯燥難學,沒有耐性和興趣學習,更不知道學了這門語言能干什么。
1.3學員基礎薄弱
我們在教學過程中,發現許多學員盡管學過C或C++,但是缺乏調試程序的基本能力,當編譯或運行過程中出現錯誤時大多數學員只會對照已有的源代碼來查找錯誤或請教員一起幫忙調試,不知道如何通過單步跟蹤和設置斷點來調試查找錯誤。即使有些學員具備一些調試能力,他們的辦法也只是在必要的地方加一些輸出語句來觀察變量的值,不知道如何在調試環境中查看變量和內存單元的值。因此,對于“更加復雜”(只是文本界面多些,用多了自然就熟悉了)的匯編調試環境,他們更加找不到解決問題的辦法。再加上匯編語言的輸入和輸出需要用到中斷,不像高級語言那么方便就能輸出一個變量的值,學員對于在內存當中直接觀察變量的值還不適應,所以當出現問題時,很少有學員能改正自己程序中的錯誤。
1.4教學內容陳舊
和大多數高校一樣,我們選用的教材是清華大學沈美明主編的《IBM-PC匯編語言程序設計》,該教材以8086指令系統為主來進行介紹,實習實驗環境主要還是DOS。然而這些教學和實驗內容與實際情況相距甚遠,我們知道不同的機器指令系統不同,而且隨著嵌入式處理器的廣泛應用,用X86的指令系統編程的范圍越來越少,這使得學員在學完這門課后到實際編程環境中還要自學相關處理器的指令集,比如ARM、MIPS、PowerPC等。對于實驗環境的選擇,大多數還是在DOS環境,由于現在的機器完全是Windows操作系統,“圖形化”的編程界面,學員普遍對DOS這種文本的編程、調試環境不熟悉,調試結果難以出現,實驗結果感覺很抽象,使得學員在學習過程中產生一些畏難情緒。
2提高教學效果的可行方法
2.1采用多媒體教學
如果有可能,最好采用能夠邊上課、邊實驗、邊演示的多媒體教室,使用多媒體課件教學。通過文字圖像、聲音、動畫來激發學員的學習熱情,增強教學效果。充分利用多媒體的功能,模擬程序指令的執行過程,著重描繪教學重點和難點。我們可以在教室的機器上安裝調試環境,在上課過程中對一些簡單指令執行使用調試環境進行演示,給學員一個了解“機器世界”的窗口,真正理解機器(CPU)對指令的執行過程。這樣可以使學員快速入門,對學習本課程建立初步的信心。
2.2精心選擇教材
教材是提高教學質量的基礎和前提,是學員系統學習知識的依據。一本好教材對于培養學員自學能力和獨立思考能力起著積極的作用。學員可以依據教材理解課堂教學內容,深入了解本學科各個領域的知識。對于清華大學的《IBM-PC匯編語言程序設計》這本教材,雖然它的內容全面而且豐富,但是由于教學學時的減少,導致很多內容特別是應用方面的內容無法講解,因此很多內容只能作為自學內容,在教學中我們發現一本教材如果有較多的內容不講或者作為自學內容,學員會“錯誤地”認為這門課不重要或太難學。所以我們建議更換教材,不再以8086指令系統為基礎,考慮到嵌入式系統的發展趨勢,可以加入一些RAM指令集、32位匯編和AT&T匯編的內容,為后續的嵌入式系統及其其它相關課程打下一些基礎。
2.3優化教學內容
目前,這門課程主要的教學內容有:基本知識(數、計算機組織),編程工具(指令系統、尋址方式),編程方法(三種結構、過程)和應用(發聲、圖形程序設計)。由于學時數的減少,我們建議壓縮或取消發聲、圖形程序設計這部分的內容,如果教員覺得非常必要講,可以安排在課程設計部分(不占課程教學學時)。另外鑒于目前網絡安全、網絡病毒泛濫的嚴峻形式,建議在應用部分教學中適當增加病毒程序設計的內容。對于前三部分的內容也可根據實際情況進行適當壓縮。與此同時,匯編語言是作為嵌入式系統開發與應用和嵌入式系統課程設計的專業基礎課,結合計算機專業課程設置,建議在最后余留四到六學時的時間介紹一下ARM指令系統,將x86指令系統和ARM指令系統進行對比學習,為后續課程的學習打下基礎。
2.4注重教學實踐
匯編語言課程一般安排在大三的第一學期開始,40學時的課程在學期前半程就結束了。雖然學時數縮短了,我們還是不能忽略本門課程的實踐這一重要的環節。因為學習一門語言課,其最直接的目的是用它去編寫程序。因此,建議在課程結束后,利用后半學期業余時間給學員安排課程設計,到學期末結束并驗收結果。對課程設計的要求不能太高,我們可以先提供給學員一些案例的源代碼,比如:經典病毒、月下情人動畫、產生隨機數、簡單學員成績管理系統、卡通小鬧鐘、文本編輯器等匯編源代碼。一方面先要求學員選擇一個案例詳細分析,給出詳細的注釋、程序設計流程、體系結構等;然后在理解、掌握的基礎上,再對本案例進行修改設計出一個新的小系統。這種做法既能提高學員的學習積極性,又能鍛煉其讀程序、編程序的能力,而且沒有占用教學學時。
2.5優化考核方式
傳統的匯編語言課程考核方式主要是實行閉卷筆試,但是大多數學員在做編程題時,普遍反映由于指令太多,要用的指令記不住,導致編程題做不出來。從近兩年的考試看,編程題得分高的學員很少。所以考試不能很好地反映出學員學習的好壞,特別是編程能力。因此建議考試形式采用:閉卷筆試50%+開卷上機編程20%+課程設計30%。這是因為匯編語言的一些基本知識還是需要筆試來考查:比如尋址方式,邏輯地址,物理地址等;上機考試可以出一些比較簡單而有代表性的題目,估計大多數學員在給定的時間內可以做完,這樣學員不用暫時去背太多的指令(當然如果用多了就不用背了),又可以測試他們現場調試程序的能力;由于上機考試時間的限制,只能出一些簡單的編程題目,不能完全體現學員對知識的綜合運用能力,所以要通過課程設計來補充考核這方面能力,當然時間可以延長到學期末。
3結束語
壓縮學時后的匯編語言課程教學,不能只注重完成理論教學內容,而忽視對學員編程能力的培養。教學過程中不僅要理論聯系實際,還要注重形象性、生動性和趣味性,幫助學員理解,培養他們的興趣,提高教學效果。要在現有的資源和條件下,盡可能地挖掘教員和學員的潛能,把匯編語言課程教與學做得更好。
參考文獻:
篇8
關鍵詞:C語言;高職;單片機
中圖分類號:G642 文獻標識碼:B
“C語言程序設計”是高職高專電子專業的專業必修課。傳統教學以理論為主,以學科本位的邏輯體系來設計課程的教學內容。課程內容沒有與高職電子專業的其他課程有機銜接,不符合高職高專技能培養的特點。學生在學習C語言之后,不能用之有效地解決實際問題,學生的學習積極性難以調動,因此有必要對該課程進行改革。
1 現狀分析
目前高等學校都把“C語言程序設計”作為理工科非計算機專業的計算機基礎教育課程,屬于計算機基礎教育課程的一部分。但課程設置并沒有考慮與其他專業課程之間的關系,沒有針對高職應用電子技術的專業特點,成了非計算機專業學生的“計算機通識教育”課程。
雖然許多學校對“C語言程序設計”課程從教學內容、教學手段、教學方法等方面進行了大膽的改革,把邏輯與編程解題思路(算法)放在主體地位,講解如何分析問題和解決問題;但是受“在學校里牢固掌握基礎知識,畢業后在實踐中積累經驗”這種傳統的教學理念的影響,把培養學生閱讀程序、設計程序的能力,分析問題、、解決問題的能力和邏輯思維能力作為教學目標。課堂上學到的也只是用C語言解決一些數學問題,所學內容和實際應用相脫節,認識不到“C語言程序設計”和自己專業之間的關系,學生在學習C語言之后,不能用C語言編寫為本專業服務的應用軟件。特別對高職高專電子專業學生來說,C語言的知識成了他們專業知識結構中的一個“孤島”。
2 改革的必要性
C語言是影響深遠的、傳統的、優秀的面向過程的結構化程序設計語言。C語言功能豐富、表達能力強、使用靈活方便、應用面廣、代碼轉換質量高。C語言方便進行模塊化軟件設計,還可以實現C語言和匯編語言的混合編程。C語言既具有高級語言的優點,又具有低級語言的許多特點,能像匯編語言那樣直接利用CPU的硬件特性進行程序設計。既可以編寫應用軟件,又可以編寫系統軟件。和匯編語言相比,C高級語言程序設計快、可讀性、可移植性和可維護性好。一般情況下,完成同樣的任務,使用C高級語言比用匯編語言可提高工作效率5-10倍,在調試階段更容易體會到這一點,因此C語言特別適合單片機的開發。嵌入式系統中使用的嵌入式操作系統絕大部分也都是以C高級語言為基礎的,很多直接將源代碼提供給使用者。目前在單片機應用領域,C高級語言越來越受到人們的重視。用C語言進行單片機程序設計已經成為單片機開發的一個主流,是單片機開發與應用的必然趨勢。
單片機課程是應用電子技術及相關專業的一門重要的專業主干課,在專業基礎課和其他專業課方面起著重要的橋梁作用。它涉及到的基礎理論知識較廣,應用范圍廣,是一門實踐性、工程性很強的技術課程,在電子技術及相關專業課程中群中占有十分重要的地位。電子專業的學生普遍將單片機用于課程設計、畢業設計和電子產品設計大賽等許多實踐環節。單片機應用也是學生將來在電子類公司或電子行業工作的最基本的技能。“單片機原理與應用”課程都是基于匯編語言的,高職高專學生很難應用匯編語言去搞程序設計,學生學到的單片機知識不能得到應用。
高等職業教育的培養目標是:培養既有一定理論基礎又有較強實踐能力,在生產服務第一線工作高層次的實用型、技術型人才,它不同于一般本科院校的學術型、工程型人才的培養目標。就高職應用電子技術專業而言,它培養強電弱電相結合,以弱電為主,并能熟練應用電氣技術、計算機技術和控制技術等現代科學技術,具有較強實踐能力的技術管理人才。強調應用性、實用性是高職教育的特色,教學內容突出基礎理論知識的應用和實踐能力培養的原則,以應用為目的,以“必需、夠用”為度,加強針對性和實用性。
因此,高職應用電子專業的“C語言程序設計課程”應不同于本科相應專業,也應不同于高職其他專業。“C語言程序設計”課程的開設應緊扣本專業的特點,為本專業的培養目標服務。如果將“C語言程序設計”變成“單片機C語言程序設計”,學生通過本課程的學習掌握單片機C語言程序設計方法,達到獨立利用C語言編寫單片機應用程序的目的。將C語言“知識孤島”和單片機“知識孤島”連接起來,結合所學其他專業知識,使學生學會應用單片機開發電子系統的基本方法。如果學生以后需要用C語言或其他高級語言開發通用計算機系統的應用軟件或系統軟件,有了“單片機C語言程序設計”的基礎,可以觸類旁通,很容易掌握其他高級程序設計語言。這也符合從特殊到一般,再從一般到特殊的認知規律。
3 課程改革設想:
3.1 課程內容的改革
把“C語言程序設計”置換為“單片機C語言程序設計”,放在“單片機原理與應用”課程之后開設,將“計算機基礎教育”課程變成“單片機開發技能”課程。課程內容適用于C高級語言的初學者,包括數據類型、運算符和表達式、數組、指針和函數、程序的順序結構、選擇結構和循環結構、程序設計基本知識和單片機的C編程等內容。對C語言中較難或單片機程序不常使用的內容,比如多維數組、指向指針的指針、鏈表等進行刪減。相關例題應本著“深入淺出,突出實用”的指導思想,難度應與高職高專學生的基礎相適應,算法不要過于復雜。單片機的C語言編程部分主要應包括中斷、定時器/計數器、串行口、鍵盤和顯示等相關應用,適當包含少量可編程芯片的應用。所選內容應體現先進性、實用性和技能培養的特點,拋棄一些過時或不實用的內容,把提高學生的職業技能放在突出的重要位置。整門課程應將單片機和C語言有機結合起來,強調知識點在單片機程序設計中的應用,體現“單片機C語言”的特色,避免把課程內容分為“C語言程序設計”和“單片機C編程”兩部分。
3.2 編譯開發環境
以80C51系列為基礎,開發環境選擇德國KeilSoftware公司的Keil uVision集成開發環境(當前版本是uVision3)。這是一個基于Windows的開發平臺,集成了編輯器、項目管理器、Cx51編譯器、Ax51宏匯編器、BL51/Lx51連接定位器和調試器,用戶群極為龐大,符合教學特點的典型性。其中Cx51是專為80C51單片機設計的C語言編譯器,生成的程序代碼運行速度高,存儲空間小。KeiluVision還提供了強大的項目管理功能,可以十分方便地進行結構化多模塊程序設計,特別是Keil提供的純軟件模擬仿真功能(也支持硬件目標板在線仿真),非常適合教學使用。Keil調試器支持斷點管理和程序代碼的多種 執行方式(全速、單步、執行到指定行等)。在調試狀態下有寄存器窗口、存儲器窗口、觀察窗口和命令窗口,用于程序執調試過程中顯示單片機寄存器、存儲器、局部變量和觀察點的狀態和輸入各種調試命令。Keil uVision的集成功能(Peripherals)菜單可以打開中斷系統、I/O接口、串行口、定時器計數器等狀態窗口,通過這些狀態窗口可以觀察軟件仿真結果。
Keil uVision可以與PROTEUS整合構建單片機虛擬實驗室。PROTEUS是目前世界上最先進最完善的嵌入式系統設計與仿真平臺,可以實現數字電路、模擬電路及微控制器與外設組成的混合電路系統仿真、軟件仿真、系統協同仿真和PCB設計等全部功能。由于PROTEUS軟件包逼真、真實的協同仿真功能,得到了包括劍橋在內的眾多大學用戶的認可,作為電子學或嵌入式系統的課程教學、實驗和水平考試平臺。Keil uVision與PROTEUS通過設置聯機調試單片機系統,在PROTEUS中完成單片機系統的電路原理圖繪制后,在Keil uVision集成開發環境中進行程序設計、項目的創建、編譯鏈接和調試,同時可在PROTEUS查看直觀的結果(如鍵盤輸入和LCD顯示等)。
3.3 教學方式的改革
高職教學應該是基礎和技能的教學同步進行,甚至先教技能再教理論,在不斷實踐中掌握技能,在技能學習中提高基礎理論。在高級語言程序設計教學中,不能期望高職學生對每一個算法都理解。一些太復雜的算法、單片機應用系統中常用芯片的驅動程序,可以以函數庫或軟件包的形式直接提供給學生,供學生在程序設計中調用,降低理論教學難度。
確立以學生為中心的教學理念。從學生實際出發,以學生為本,采用多樣化、層次化的教學方法,貫徹循序漸進、深入淺出的原則。學生沒有高級語言程序設計的基礎,在“單片機C語言程序設計”教學中要注意分散難點,縮小臺階。在內容體例的設計上以實用為主,拋棄過多的語法細節和非通用的或實際用途很少的語言特性,理出重點和教學主線;采用一體化教學方法,以程序樣例為主實施教學。淡化語法教學,以程序設計帶動基本語法的學習。
上機實驗是掌握單片機C語言程序設計的必要手段。不能簡單地認為上機實驗只是輔的教學。程序設計的能力是在實際動手實踐中練就的,通過上機操作和驗證可進一步加深各種語句的理解,提高學生的編程能力。通過Keilu Vision與PROTEUS組成的聯機調試環境,熟練使用Keilu Vision和PROTEUS軟件對學生的深入學習有巨大的幫助。
篇9
摘 要:本文對計算機專業學生存在的專業課學習興趣低、自主學習能力弱以及工程能力不強等問題,進行了分析和思考。結合匯編語言程序設計課程教學的實踐體會,探索如何引入工程案例改進教學方法,激發學生專業學習的興趣,培養學生自主學習能力,逐步提升其工程能力。
關鍵詞:計算機專業;工程案例教學;工程能力;匯編語言程序設計
基金項目:重慶市教委(113014),地方高校計算機及其相關專業工程應用型人才培養模式研究與實踐(2009006);重慶理工大學校級項目(2009006),結合工程認證,創建新型的計算機專業教學體系。
作者簡介:徐世軍,男,教授,碩士生導師,研究方向嵌入式技術;范偉,男,副教授,研究方向為計算機應用與物聯網;黃賢英,女,教授,碩士生導師,研究方向計算機應用。
1 背景
計算機科學與應用技術的發展是高新技術的主要標志,如何跟上時代的發展和社會的需求是計算機專業教學所面臨的挑戰。教育部計算機科學與技術教學指導委員會在2004年的《關于計算機人才需求的調研報告》中指出:計算機專業的學生仍處于應試教育模式中,實踐課程少,動手能力不強,導致學生畢業后競爭力不強。隨著近年來高校招生規模的擴大,學生綜合素質不斷下降;有些問題顯得更加突出,如:學生普遍學習能力較弱、缺乏學習的熱情,部分學生對專業不感興趣,甚至厭學。
工科畢業生缺乏工程背景、動手能力弱,被認為是當前大學教育的首要“弊病”。在擔任計算機專業教學工作之前,本人一直在企業從事工程設計和產品研發工作,這也使我有機會從社會需求和大學教學兩個不同的角度去觀察和思索一些問題。從社會需求角度去觀察大學畢業生,你會發現他們大多存在自主學習能力差、專業知識面窄(甚至除專業書本外一無所知)、動手能力差、思維僵化、方法能力和社會能力嚴重欠缺等不足。而高校教學的主要方法仍然是傳統的以理論知識灌輸為核心,力求學生能全面領會和掌握主要知識點。即使談到教學改革,很多學校的主要辦法還是把教學計劃排得更滿,讓學生學得更多、更細。從本質上講,這仍然是應試教育思維模式的一種延續[4]。
就計算機專業教材而言,多數是原理性、條款式、菜單型論述結構,內容大都比較抽象和枯燥。若課程教學仍沿用以教師為中心、以理論灌輸為主、輕學生自主動手參與的傳統教學模式,將很不利于激發學生的學習興趣、調動其主動學習的積極性,當然更不談不上培養學生的工程能力。
引導其學習興趣、培養自主學習的能力從而提高教學效果,是教學改革的關鍵;如何采用更有效的課堂教學的形式,逐步培養其動手能力,也已經成為計算機各門專業課程都必須進行反復思考和不斷改進的重要課題。
2 改進思路
究其原因,是我們在教學過程中很少注意去區分和思考“科學研究”和“工程技術”的差異問題。在實際工作中,社會對從事“科學研究”和“工程技術”的人員素質和能力的要求是有很大差別的。科學研究
往往是專注于某個專業并從某個專業領域入手,遵循系統、嚴密的理論推演,往往是由個人完成的;而工程技術需要的是綜合性知識和能力(有的工程甚至是憑一種感悟),一個具體的工程技術問題,大多不是一門專業學科知識所能解決的,需要多學科知識的綜合應用。工程的許多條件常常是動態變化的,工程問題的解決更象是一場開卷考試――思路和方法更重要。工程更注重是團隊行為(管理和協調),成員的協作精神常常決定了工程的成敗。科學要求嚴謹和一絲不茍,而工程則注重對全局把握(可能會犧牲局部)和利害的權衡取舍[1]。因此,所謂“工程能力”實際上就是對上述“工程技術”素質要求的綜合。
“授之以魚,莫若授之以漁”。我們要清楚地認識到,工程能力的培養僅靠傳授科學知識是遠遠不夠的,它更加強調對學生思路和方法的訓練,讓學生學會學習、學會思考、才能真正解決實際問題。簡言之:學生工程素質和能力的培養,就是通過各種具體工程案例教學使學生盡早學會用綜合的、全局的、動態的思維方法去發現問題、分析問題和解決問題,全面提高學生的專業能力和社會能力[3]。
3 具體方法
匯編語言程序設計課程的專業性、綜合性強,涉及的知識點多,學生普遍反映抽象難懂,不易掌握。因為匯編語言和機器的體系結構結合緊密,使用者必須對計算機組成、硬件控制和指令解釋過程有比較清晰的理解和認識,因此學生在學習中容易產生厭煩情緒,對匯編語言的學習熱情普遍不高。針對這些特點,筆者注意從以下幾個方面入手進行教學形式的改進和嘗試。
1) 讓學生盡早領會匯編語言的特點及應用領域,明確學習目標、激發學生的學習興趣。
在第一堂課,向學生播放一組經過精心準備,且學生感興趣的介紹嵌入式產品功能及應用的視頻短片,盡可能向學生展示部分實物的內部結構,并重點說明其控制方法和運行機理。比如:汽車電子部件(AT組件、電噴、電動門窗、防盜報警、輔助轉向等),智能儀器、儀表(智能電表、溫度調節儀、自動售貨機)以及一些智能小家電產品(智能小風扇)等等;還可以找適當的時機給學生介紹一下計算機病毒的工作機理。要讓學生明白,在某些特定的領域和場合,匯編語言具有不可替代的地位。在第一堂課上,就明確地提出學習本門課程要達到的目標,特別是學習后可以解決哪些實際工程問題。
通過實例分析讓學生體會到匯編語言特點:它是一種最接近計算機核心的語言,可以最大限度地發揮計算機硬件的性能,是一種能夠利用計算機的硬件特性直接控制計算機硬件的語言。用匯編語言編寫的小程序的速度通常要比高級語言快幾倍、幾十倍、甚至成百上千倍。同時,提醒學生注意:學習匯編語言的好處――有利于理解軟件和硬件的關系,學會如何有效地設計數據結構,能讓計算機存儲空間更少、處理速度更快,能更有效地提高調試能力。要從思想上改變學生“重軟輕硬”的傾向,明確告訴他們,如果想真正地控制自己的程序,只知道源代碼級的調試是遠遠不夠的。
2) 在明確學習目標和具體工程應用之后,讓學生針對“如何實現這些目標(特別是工程應用問題)”,各自提出自己認為課程中應學習的知識點和方法,最后由教師加以總結和歸納,形成“匯編語言程序設計”課程的基本教學和實驗內容。
讓學生“帶著問題學習、帶著問題實驗”是培養學生學習興趣、提高學生工程能力的好辦法,只有學生的全身心投入才可能克服被動“填鴨式”教學的種種弊端。
3) 抓住課程特點,使用更直觀生動的教學形式讓學生更容易理解和掌握。
針對匯編語言和機器體系結構結合緊密、抽象、難于理解的問題,在講解指令系統時,一定要與CPU功能結構圖、存儲器結構示意圖結合起來,把地址、數據和控制信息的傳遞過程通過圖示進行分解。并且在實驗課中,專門設計若干段由各類指令組成的小程序實驗,讓學生反復使用DEBUG工具演示指令流程,仔細跟蹤每條指令運行后各個寄存器和存儲器的變化狀況,列表并作好記錄,讓學生自己對指令功能進行理解、分析和總結,這也是訓練學生調試程序和發現邏輯錯誤非常有效的手段。
4) 在指令系統學習完以后,就可以引入完整的工程案例進行教學。通過選取真實具體的工程案例,使學生學會用跨專業、綜合的、全局的思維方法去觀察問題、分析問題和解決問題。
實際上,要選擇一個合適的工程案例是非常困難的,不但要考慮工程項目本身的特點,而且要考慮學生的實際領悟、消化能力。教學案例可取自實際工作中涉及的工程應用實例(變科研工作為教學資源),要強調實用性,兼顧趣味性,這樣更能激發學生參與的積極性。教師通過案例分析,將匯編語言程序設計方法和相關專業的知識點恰當地融入案例的分析和演示過程中[2]。
筆者選用了一個工業產品開發項目――“直流無刷電機智能控制系統”的研發全過程作為案例教學的主線,分步驟、分模塊地進行講解和分析。案例教學的重點包括:工程目的,工程項目的主要知識點,具體的實施步驟。同時,在案例中穿插介紹一些編程技巧和設計及調試工作的要點和難點。案例的教學可按以下層次逐步展開。
① 首先介紹項目目的、目標、實施方案和主要知識點。必須讓學生深刻地認識到任何一個項目都不是一門專業學科知識所能解決的,需要多學科知識的綜合應用,要解決工程問題必須有開放的思維和綜合的知識。通過介紹,使學生逐步領會工程項目開發的步驟和基本方法。
② 提供全部匯編語言程序清單,并讓學生充分認識和消化一段時間后再進行講解,使學生建立匯編語言程序語句、結構和形式的總體概念。總體概念的建立,比具體的編程方法和技巧更加重要。
③ 提供全套軟件設計的程序流程圖,讓學生對照程序清單去領悟匯編語言程序設計的基本思路和方法。
④ 在充分消化的基礎上,提出若干問題讓學生自己在案例中去尋找答案,最后再由老師加以分析和總結。這些問題的提出和解決,就是處理具體工程問題的基本方法和步驟。解決問題的方法有很多,但在具體工程中必須找到最優方案(成本低、可靠性高),如:
如何實現驅動電路發生短路時,系統在10μS以內啟動保護(硬件中斷方式);
如何確保電機能準確地換相操作(采用定時器中斷,定時查詢換相標志);
如何用軟件準確設置MOS管上下臂的“死區(>300nS)”(采用NOP指令延時);
如何實現主程序和子程序以及子程序之間的參數傳遞(約定變量――存儲器法);
如何用軟件設計計數器、定時器(+1/-1、比較和循環指令)。
⑤ 在實驗課中,簡化一些條件,讓學生分組實現一些功能模塊:電壓/電流處理、溫度保護、調速、換相處理的子程序設計,并且,實現這些功能模塊的組合。通過分組編程和組合實驗,使學生初步體會到工程開發的團隊行為,并逐步學會管理和協調。
⑥ 對部分軟件進行點評和總結。
5) 另外,針對其他的一些指令應用和編程技巧可選取適當的工程案例進行專項教學和訓練。
筆者選用了一個“獵槍彈自動裝配機控制系統”的設計案例――裝配機共有22個工位,其中:1、3、6、9、12等5個工位分別是“彈殼、底火、發射藥、彈托、成彈”檢測工位。只要有一個檢測工位不合格,后續的裝配就不再進行,當不合格品進入第22工位(“排廢”工位)時自動剔出。先要求學生思考采用什么方法實現最容易,然后設計程序流程圖,最后將筆者的設計方案供大家討論。這樣,就強化了學生對AND、OR及移位指令的功能理解,并學會了如何應用邏輯運算解決工程問題的編程技巧。
要培養計算機專業學生的學習興趣,還可以讓某些學生較早地參與到教師的科研工作或實際項目開發中,并根據學生的實際情況分配一些具有一定難度的任務,也能較好地調動學生自主學習的積極性[5]。
4 結語
通過對匯編語言程序設計課程教學的一些改進嘗試,提高了學生的學習興趣,避免了其學習的盲目性,也為學生進行工程研發積累了經驗。計算機專業系列課程的教學改革是一個系統工程,每門課程的實際操作中都有許多工作要做,尤其是案例教學環節,筆者根據自己從事工程研發的經驗,談了一點膚淺認識,希望能對計算機專業系列課程的教學改革有所幫助。
參考文獻:
[1] 蔡敬民,魏朱寶. 應用型本科人才培養的戰略思考[J]. 中國高等教育,2008(12):58.
[2] 張雪蘭,譚毓安,李元章. 匯編語言程序設計課程教學改革與創新能力培養[J]. 計算機教育,2008(8):22-23.
[3] 黃賢英,李玉桃. 構建面向崗位的計算機專業教學體系和教學模式[J]. 重慶工學院學報.2007(21):175-177.
[4] 黃賢英,劉恒祥,范偉. 計算機專業實踐教學體系建設思考[J]. 實驗技術與管理,2009(10):34.
[5] 范偉,黃賢英. 大學計算機教育中的工程素質培養[J]. 重慶工學院學報, 2008(3):163-166.
Strengthen Engineering Ability Training, Professional Teaching
Reform Practice in the Course of Exploration
XU Shijun, FAN Wei, HUANG Xianying
(College of Computer Science and Engineering, Chongqing University of Technology, Chongqing 400054, China)
篇10
【關鍵詞】單片機實踐教學分模塊教學階梯式教學
引言
近幾十年來,計算機技術得到了飛速發展,PC機和網絡已經走進千家萬戶,人們的日常生活、工作學習都和它緊密聯系在一起。單片機作為計算機中的一個獨立門族--嵌入式計算機系統,具有廣泛應用。例如:各式各樣的辦公設備和家用電器的智能化、遙控化和模糊控制智能化都是靠單片機來實現的。單片機的學習也理所當然的受到了高等院校師生的高度重視。但是,如何開展單片機的教學工作,如何讓學生學好單片機這門課程,一直是承擔這門課程的老師頭疼的問題,也引發了對這門課程教學改革的思考。
單片機教學是一門實踐性和技術性很強的課程,學生需要做大量的軟硬件實驗,目前采用的教材多屬于MCS-51系列,程序源代碼用匯編語言編寫,教學內容與實際的產品設計之間存在著很大差異,因此在單片機實踐教學環境中必須結合當前實際應用的技術特征,適當增加新知識、新內容,使用計算機輔助實驗教學、用計算機模擬實驗、用計算機仿真軟件等方法改革教學內容和教學手段。為此,筆者結合自己的學習及教學經驗,對單片機實踐教學提出一些心得。
一、教學內容的更新
1.1以匯編語言程序設計為基礎,以C51語言程序設計為提高
使用匯編語言的優點是代碼緊湊,運行效率高,可直接對硬件內部進行控制,但缺點也非常明顯,主要表現在對目標單片機硬件結構的依賴上,編程者必須對硬件有深入的了解,而且匯編語言抽象,不易理解,功能弱,編程效率低。當然,匯編語言有助于學生對單片機底層的存儲器、堆棧等的了解,在某些領域還是有一定的價值,學生必須掌握。
例如,應用單片機的時候,經常會遇到需要短時間延時的情況。需要的延時時間很短,一般都是幾十到幾百微妙(us)。有時候還需要很高的精度,比如用單片機驅動DS18B20的時候,誤差容許的范圍在十幾us以內,不然很容易出錯。這種情況下,用計時器往往有點小題大做。而在極端的情況下,計時器甚至已經全部派上了別的用途。這時就需要我們另想別的辦法了。
用匯編語言寫單片機程序,這個問題還是相對容易解決的。比如用的是12MHz晶振的51,打算延時20us,只要用下面的代碼,就可以滿足一般的需要:
51單片機的指令周期是晶振頻率的1/12,也就是1us一個周期。mov r0, #09h需要2個機器周期,djnz也需要2個機器周期。那么存在r0里的數就是(20-2)/2=9。用這種方法,可以非常方便的實現256us以下時間的延時。如果需要更長時間,可以使用兩層嵌套。而且精度可以達到2us,一般來說,這已經足夠了。
相對匯編語言,C51語言作為單片機的開發工具具有程序結構清晰、可讀性好、易于維護等顯著的優點,一條C語言相當于幾條匯編指令,完成同樣功能程序的行數也大大縮小,更便于復雜算法的實現和調試。現在社會上的單片機系統已經普遍采用了基于C51高級語言的軟件系統。由于學生在低年級已經學習過標準C語言,有了這個基礎后,在現在的單片機實驗中給學生增加一些C51編程訓練,通過循序漸進的實驗,學生完全能在短期內自學掌握C51。通過增加C51的內容,更新了實驗教學內容,使學生的學習更接近實際系統的社會化應用,無疑對學生后期的學習有很大的益處。
C51程序設計不受具體機器的限制,非常擅長于科學計算,入門很容易;但對于程序的時間和空間要求很高的場合,匯編語言仍是不可缺少的。所以在學生單片機應用到達一定水平后,提倡C51與匯編相結合的程序設計方法,取長補短,使程序設計達到更高的水平。
1.2 以信號傳輸路徑為主線,分模塊教學
傳統的單片機教學以單片機的知識結構為主線,先后講單片機的硬件結構,指令系統,匯編語言程序設計,接口技術及應用。這樣的教學順利很容易使學生乏味,引不起興趣。經過多年的教學探討,我們提出以信號的傳輸路徑為主線,分模塊的講解各個部分涉及的知識點的教學方法。信號的傳輸路徑如下圖一所示:
信號傳輸路徑分為五個模塊,單片機模塊部分介紹單片機的硬件結構,最小系統設計,存儲器擴展方法等。輸入、輸出模塊部分結構接口擴展、接口電路設計等知識。前向通道介紹電平轉換電路、濾波電路、A/D轉換電路等設計方法和程序設計技巧。后向通道部分介紹電磁閥、接觸器、各種電機、LED、LCD電路設計和程序設計技巧。
按信息傳輸路徑分模塊教學,有以下幾個優點:
1、 知識點完整,思路清晰,各個知識點的作用明了。
2、 后續項目實例教學法中,便于把一個大的項目按模塊劃分為幾個小的部分,逐一講解,注意攻破。
2 教學方法與教學手段的更新
單片機技術的應用在現代人生活中隨處可見,小到小區住宅的門禁系統,大到航空航天系統中,都有單片機的身影。單片機技術飛速發展,日新月異,單片機課程的教學方法與教學手段也必須不斷更新,以適應單片機技術的發展。
經過多年的教學探索,我們提出分四步走,逐步推進的階梯式教學方法,其示意圖如下圖二所示。每個教學方法既可以獨立進行,又相互聯系、相互推進。前一步的順利開展為后面的教學環節鋪好道路,使后面的教學環節更容易開展;同時只有一步一步逐一落實好了,才可以達到最佳效果。
2.1用項目實例促進教學,引發學生興趣
興趣是最好的老師,在學生剛開始接觸這門課程時,通過生動形象的項目實例,如基于單片機的交通燈控制器、基于單片機的搶答器、基于單片機的智能小車等實例,讓學生明白什么是單片機?單片機在我們身邊哪些地方出現?單片機在電子產品中發揮什么作用?使學生明白學習的目的,對這門課程產生濃厚的興趣。
例如基于單片機的交通燈控制器項目,首先拿出前屆同學制作的作品,講解功能,演示效果,分析工作原理;然后介紹作品的硬件結構,軟件功能模塊的組成;最后概括該項目的開展步驟。讓學生既對事物有個感性的認識,引發濃濃的學習興趣;同時又清楚完成該項目需要做哪些工作,明白今后在該課程學習過程中的努力方向。
2.2 有效利用計算機輔助教學
計算機輔助教學CAI在教學中的作用毋庸置疑,通過圖文聲像的形式表達教學內容,補充了傳統板書的授課方式。單片機原理與應用理論抽象,實踐性強,通過采用計算機輔助教學, 采用視頻、音頻、豐富的動畫及色彩等多種教學表達方式生動描述教材中的抽象概念,能極大的增加知識的傳授量,使得課堂教學變得豐富多彩。比如,制作flas,演示單片機的定時、計數中斷工作原理;比如,采用多媒體演示單片機仿真軟件Proteus和Keil聯調的強大的仿真功能,演示程序的編寫及調試過程;這使得抽象的理論教學顯得非常直觀,將促使學生對知識的感知,活躍其思維過程,提高學習效率。比如,在教學初期播放前屆同學優秀作品視頻,激發學生興趣。比如,用 LabView虛擬儀器做信號采集試驗,擴展試驗設備。
2.3結合應用實例,開拓試驗渠道
單片機是門軟硬件結合特別緊密的課程,硬件是軟件的控制對象,軟件使硬件的功能更加強大,具有智能化能力,兩者相輔相成,缺一不可。初學者很難兩面兼顧,因此我們開拓多種試驗渠道,促進教學。
在單片機實驗課時較短的情況下,僅僅利用實驗室做實驗不利于單片機的實踐教學,筆者在教學中發現,利用Proteus與Keil構建單片機的虛擬實驗室,虛擬實驗彌補了硬件資源的不足,克服了實驗箱教學的固定硬件資源導致的實驗內容局限性,豐富了實踐教學方式,提高了學生的學習興趣,取得了非常好的教學效果。Keil完成單片機軟件設計調試,proteus完成硬件設計及系統運行結果的查看。在單片機的實踐教學中增加Keil和proteus仿真軟件的使用,對于學生深入學習單片機,用來做單片機的仿真分析和設計,無疑有巨大的幫助。通過學習Keil軟件,加強實踐環節中C51語言的應用,并結合工程實例,基于單片機的智能小車,將學生的程序設計能力練習落到實處。此外,proteus仿真軟件有國際通用的虛擬儀器及電子元器件庫。教師可以在實驗室向學生演示Protues仿真環境中的原理圖設計,搭建虛擬儀器儀表,在 Keil集成環境中進行程序的編譯連接,進行單步和全速調試,引導學生觀察電路的狀態和軟件運行后的變化。
2.4 組織課外電子設計興趣小組,參加電子設計競賽,推動單片機教學的開展
利用現有的實驗環境,以組織課外電子設計興趣小組為中心,鼓勵學生參加各種競賽,如圖五所示,有助于培養學生的應用、開發、創新及綜合分析能力,既不打亂正常的教學秩序,同時又促進了教學更有效的開展。
在課外電子設計興趣小組中間進行一些小競賽,要求學生自由組隊,獨立完成設計,提交設計說明,明確闡述設計思路和設計結果,并進行小組答辯,評選出優秀的作品給予一定獎勵,這種方式,促使學生不斷的學習,在找到問題,解決問題的過程中,學生的知識面擴大了,獲得了學習的樂趣和成就感,激發了他們的自主性和創造性,培養了工程設計素養和團隊意識。
同時,從這部分學生中選拔一些尖子生參加省和國家的各種競賽,以賽促學。
結語
在單片機課程實踐的教學中,我們根據社會對工程類專業人才的需求,做了一些嘗試性的工作,提出新的教學目標,并更新了實驗教學的內容和模式,旨在提高教學質量,培養學生的工程設計能力,為他們走上工作崗位打下堅實的基礎。
參考文獻
[1] 雷建龍 吳相林 馮雪姣,加強實踐性、提高趣味性,改進單片機原理教學方法的探索,教育理論與實踐[J],2002(s1):
[2]梅麗風,藍和惠,任國臣 單片機課程教學改革的探索[J], 遼寧工業大學學報(社會科學版),2008(8):114-116