真人一对一直播,chinese极品人妻videos,青草社区,亚洲影院丰满少妇中文字幕无码

0
首頁 精品范文 匯編語言程序設計

匯編語言程序設計

時間:2023-06-02 09:59:37

開篇:寫作不僅是一種記錄,更是一種創造,它讓我們能夠捕捉那些稍縱即逝的靈感,將它們永久地定格在紙上。下面是小編精心整理的12篇匯編語言程序設計,希望這些內容能成為您創作過程中的良師益友,陪伴您不斷探索和進步。

第1篇

關鍵詞:匯編語言程序設計;教學改進

中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2011)09-2111-02

Teaching Thinking of Assembly Language Programming Course

LUO Xing

(Hanshan Normal University, Hanshan 521041, China)

Abstract: This paper discusses the problem appear in teaching of assembly language programming course, propose some methods to improve student's ability to master the knowledge and learning interest. Discuss the assembly language teaching in Win32 platfrom in the last.

Key words: assembly language programming; teaching improvement

1 匯編語言程序設計課程教學現狀

匯編語言程序設計作為一門計算機專業的課程,其存在的合理性在近年受到爭議。有些人認為,匯編語言作為一種低級語言,指令繁多,難以掌握。另外,編程效率也不高,一個高級語言用一條語句實現的功能,在匯編語言中需要很多條指令才能實現。此外,匯編語言在時間上和空間上的優勢由于高速CPU和大容量存儲器的出現,也變得意義不大。

我認為學習匯編語言仍然具有重要意義。可以歸納如下:

1) 可以比較深入了解計算機硬件的底層工作原理,例如:CPU的工作模式,寄存器的概念,內存的尋址方式,中斷的工作原理等。

2) 熟悉各種數據表示方法。如各種數制的轉化,各種類型的數據在內存中的存儲方式。學生在系統學習匯編語言程序設計這門課程后,對二進制,十進制以及十六進制相互間的轉換應該非常熟練。對數據在內存中兩種排列方式即大端方式(Big Endian,低地址存放高位字節)與小端方式(Little Endian,低地址存放低位字節)有清晰的理解。而這些相關的概念的牢固掌握對高級語言中的數據類型以及計算機網絡編程的學習具有很大的幫助。

3) 通過匯編語言編程學習,可以促進對高級編程語言相關概念的理解。高級語言在編譯的時候,一般都是先生成匯編代碼,然后再生成的二進制代碼。所以,通過對比分析匯編代碼與高級語言代碼的實現方式,對程序的執行效率,數據在內存中存放方式,堆棧的概念,函數的調用及參數傳遞的方式等都會有進一步的了解。

在教學中,我也遇到一些問題。一方面就是學生的積極性不高。主要原因包括:指令很多,難以記憶。對于幾個大類的指令,如果每次課上一類,學生課后如果不進行主動復習,往往到下一次課的時候,就會忘記前面所學的內容或者發生混淆。另外,在學習匯編課程之前,他們已經學過一門高級語言,如C/C++等,匯編語言的學習方式與高級語言的學習方式有所不同,高級語言比較容易上機練習,也容易對程序運行結果驗證,對于開發實用軟件也相對容易,所以學生的興趣比較大。而匯編語言一方面涉及到底層的硬件概念,比較難以理解,另一方面上機也比較困難,可以這么說,如果按照課本的順序講課,要到差不多講完課,學生才可以上機完成一個功能比較完整的程序。

2 促進學生對知識的掌握

要解決這些問題,我認為要在學生的知識掌握方式以及學習興趣的培養上下功夫。對于知識的掌握,除了每次新課內容講完后,精心給學生布置作業習題之外。還應該注意到由于匯編語言的指令及相關的知識點很多,對于剛接觸這門課程的學生一開始往往不大適應,容易混淆前面學過的內容,所以教師及時對所學過知識點進行比較和總結就很有必要。此外還應該定期對學生的學習效果進行檢測,從過去的教學經驗看,匯編語言這門課程是學生比較容易與教師的教學進度脫離的一門課程,不少學生在一開始由于在掌握知識遇到困難,問題越積越多,最終可能放棄聽課。在檢測的方法上,可以借助網上考試系統。教師可以自主出題,也可以讓系統自動出題。通過分析學生的測試結果,教師可以及時調整教學進度,學生也會有一定的學習壓力,使他們花更多時間查補缺漏的知識。

程序設計學習的最佳方法就是上機實踐。匯編語言上機練習跟高級語言的上機練習相比,對于學生來說比較困難。一方面是由于一個完整的匯編程序涉及的知識點很多,而教材往往按知識點分類進行編排。所以學生要想在剛開始學習階段,就編出完整的程序有一定的難度。另一方面,匯編程序的運行結果較難在屏幕上輸出,匯編語言只有字符與字符串的輸入輸出,對于一道簡單的算術運算題目,其結果的輸出都要通過一大段的轉換程序來實現。對于第一個問題,教師可以對教材內容進行選講,把實驗所涉及到的知識點先進行講解。對于第二個問題, 我認為應該重點培養學生熟練使用調試工具的能力,通過掌握調試工具如DEBUG,CV等的使用,一方面學生可以直接觀察程序的運行結果,另一方面,對于程序的邏輯錯誤也可以進行跟蹤、分析以及解決。此外,由于匯編語言作為一種低級語言,編程都由一條條指令進行構造,所以相對繁瑣,應盡早讓學生應用模塊化思路,掌握子程序及宏的使用方法。這樣把一些常用功能做成模塊,如輸入輸出功能,以后學生在編程的時候就可以直接調用這些模塊,從而專注于實驗的其它方面。

3 提高學生的學習積極性

對于如何提高學生的學習興趣,我認為主要讓學生意識到匯編語言的作用。一方面可以引入一些接口技術相關內容,使學生熟練掌握中斷的概念以及I/O指令,然后上機編寫中斷程序,在中斷控制器(8259A)進行驗證,由于這些實驗有按鍵輸入,有屏幕輸出,還能直接看到程序控制設備的效果,所以學生興趣會比較大。此外,教師也可以適當拓展一些知識,如嵌入式編程相關概念,有興趣的同學可以在課后自主進行學習。另外,由于不少學生對硬盤相關的問題感興趣,比如硬盤數據的存放方式,數據的修復等。可以引導學生對這些問題進行思考,然后通過匯編語言提供的I/O指令和中斷子功能,編程實現對硬盤的MBR,文件分配表等數據結構的讀取,備份,修復等功能。教師通過布置一些學生比較感興趣的課外作業,并適當提供協助,往往能提高學生的學習積極性。

另外,在匯編語言的學習過程中,教師應該有意識引導學生將匯編語言與高級語言的各個對應的部分進行比較。學生在學習匯編語言之前,通常已經學過一門高級語言,如C/C++等。高級語言在編譯的時候,一般是先轉換成匯編代碼,所以它們具有相通性。大部分學生編寫應用程序的時候是用高級語言,所以通過比較分析高級語言與低級語言在數據定義,程序流程控制,函數的定義及調用等的對應部分內容,對于學生更好的使用高級語言編寫程序是很有幫助的。比如:匯編語言里有分段的概念,一般把變量定義到數據段,把代碼定義的代碼段。而C語言是把數據與代碼都定義在一起,那么C語言編寫的程序在編譯成可執行文件后,它的全局變量,局部變量的空間是如何分配的。另外,對于動態內存分配,堆與棧的區別在哪里。還有函數的定義與調用,參數的傳遞順序是如何的?這些疑問,都可以讓學生編寫簡單的C語言程序,生成可執行文件后,然后通過調試工具進行反匯編進行分析。此外,在利用VC++,Dephi等IDE開發工具進行程序編寫時,都會用到里面的調試功能。基本上調試功能都會包括反匯編與內存查看的功能,教師可以引導學生進行這方面的訓練,使他們在以后編程時能熟練應用這個工具解決一些疑難問題,例如:內存非法訪問,指針的非法引用等。

4 Win32平臺下的匯編語言教學思考

目前很多高校在匯編程序設計教學中講解的是8088/8086 CPU實模式環境,實際上是虛擬8086模式,因為真正的實模式工作DOS下,而現在匯編語言實驗環境都是在windows 2000以上。由于現在大部分CPU都是32位以上,并且是工作上保護模式之上,此外這些CPU的寄存器類型以及尋址方式都已經發生較大變化。所以教師有必要對實模式與保護模式在邏輯地址轉化為物理地址的方式的差異,還有16位與32位的指令在用法的不同點進行重點講解。因為匯編語言現在的實際應用基本上采用工作于保護模式的Win32平臺,在Windows操作系統控制下,匯編語言雖然不能再直接存取硬件,但是能通過調用系統提供的API函數完成各種功能。其實這里的API函數當于DOS下的中斷調用,但是Window API函數無論從數量上、功能上還是易用性上都大大超過了DOS或BIOS的中斷調用功能。所以現在在Win32平臺下,匯編語言就像高級語言一樣,可以方便的開發各種Windows應用程序。有些教師認為,既然在實模式講解匯編語言很少涉及實用性,那就應該直接遷移到Win32匯編平臺,講解用匯編語言開發的Windows應用程序設計實例,從而提高學生積極性。我認為如果采用這種教學方法,可能會存在以下問題:首先由于上課時間有限,學生需要大量的時間才能熟練掌握各類指令,匯編語言的語法,程序結構等方面的知識。如果過多涉及Windows程序設計實例,對于不熟悉Windows編程機制的學生的來說,又多了一個不小的學習負擔,這樣子反而影響了匯編語言基礎知識的掌握。另外,DOS下的實模式與Window下的保護模式下的編程在本質上并無很大的區別,只要學生熟練掌握各類指令用法,理解16位與32位的指令及尋址方式的區別,邏輯地址與物理地址轉換機制等知識,他們就可以通過自主學習,較容易的掌握用匯編語言進行Win32應用程序的開發。對于教師,除了幫學生打好匯編語言的基礎,可以適當以課外作業的形式,引入一些匯編語言在不同應用領域的簡單實例,如加密與解密,軟件的逆向工程等,這些課外作業的完成對學生匯編語言的應用能力的提高將會有不小的幫助。

5 結束語

匯編語言難教難學是教師與學生的共識,但是作為計算機科學中一門低級程序設計語言,通過對它的良好掌握,確實可以促進對計算機軟硬件底層的了解,而這又能促進編程能力的提高。作為教師,在教學中應該不斷嘗新的教學方法,不斷積累經驗,只有這樣,才能把這門課上好。

參考文獻:

第2篇

關鍵詞: 高職院校《匯編語言程序設計》教學方法

1.前言

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

匯編語言直接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.結語

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

參考文獻:

第3篇

關鍵詞:匯編語言;教學改革;多媒體教學方法;案例教學方法

中圖分類號:G434 文獻標識碼:A 文章編號:1672-7800(2012)005-0214-02

0 引言

匯編語言程序設計是計算機專業及相關專業重要的專業必修課。匯編語言面向計算機硬件,與計算機機器指令一一對應,功能強大,使用靈活。目標程序效率高,長期以來一直適用于系統軟件及驅動程序的編寫。匯編語言程序設計課程不僅需要培養學生的程序設計技能,而且還要培養學生對計算機硬件運行機制的理解能力,為學習后續與硬件密切相關的課程(如計算機組成原理,微機原理與接口,單片機等)打下扎實的基礎知識,同時,它也是NCRE三級的一個可選科目,因此其對計算機專業及相關專業的重要性不言而喻。

該門課程的特點是軟件知識與硬件知識相互融合,理論與實踐并重,同時對英語水平的要求也比一般計算機高級語言高,而獨立學院是一種新型高等教育辦學形式,其高考招生錄取分數線主要介于普通本科和高等專科之間。獨立學院學生在基礎知識、自身素質、自制力、認知能力等方面與一本和二本的學生存在一定的差異。所以在匯編語言程序設計課程教學中,許多學生都反映課程內容抽象,難理解、難掌握,從而產生了不同程度的畏難心理,對教學效果產生消極影響。為了能較好地提高該課程的教學質量,本文從該門課程和學生特點入手,通過長期的教學實踐,總結了一些思路和建議,并將其運用到實際教學中,有效地提高了學生的學習積極性,取得了較好的教學效果。

1 獨立學院匯編語言程序設計課程教學中存在的問題

1.1 從課程內容來說,客觀上確實比較抽象

學習匯編語言程序設計的學生,通常只學習過計算機導論和一門高級計算機語言,對于計算機硬件運行的機制很陌生,無法將馮•諾依曼工作原理與80x86計算機組織相互聯系,導致一開始學習面向硬件編程的匯編語言,就有很強烈的挫折感,喪失了學習的自信和興趣。由于學生80x86計算機組織的知識沒有很好掌握,使得其指令系統和尋址方式的學習根本難以有效進行,其后果是這門課程難以學下去。

1.2 學生未養成良好的學習習慣,沒有掌握正確的學習方法

匯編語言程序設計課程一般開設在大一第二學期,許多學生還沒有完全適應大學的學習方式,遇到困難容易退縮,不能發揮學習的潛能,且對自己學習時間安排不夠科學充分,達不到消化吸收課堂和課本知識的效果。部分學生還有“等靠要”的依賴思想,等教師來總結,靠教師來消化,要教師來灌輸,沒有發揮學習主體應用的主觀能動性。

1.3 教學過程沒有以學生為中心

傳統教學方式以教師和教材為中心,課堂上教師與學生溝通較少,這樣顯然教學進度有了保證,但學生是否能跟上教學的進度卻成了未知數。不充分的溝通還導致了教師對學生的學習指導缺乏針對性。教師不了解學生學習困難的具體細節,不可能正確引導學生克服困難,也無法加強教師與學生的相互聯系。

1.4 學生理論與實踐脫節

在匯編語言程序設計教學過程中,理論與實踐是并重的關系,偏袒任何一方都不可能有好的教學效果。偏向理論,實踐不到位,應用能力低下;偏向實踐,學習到的知識無法系統化、條理化,不利于知識水平的提高和升華,導致知識水平有一定的局限性。在該門課程教學實踐過程中,這兩種情況的學生都有,急需教師給予科學引導。

2 獨立學院匯編語言程序設計課程教學改革

為了解決好上述教學問題,筆者針對獨立學院的辦學特點和學生特點,總結了一些有益的思路和想法,具體思路如下:

2.1 課程開始時,要和學生就如何學習好匯編語言程序設計這門課程作充分的溝通

課程一開始,就需要將這課程的特點、難點,及其所需要的合理學習時間和正確的方法告訴學生,幫助學生科學合理安排好自己的學習時間,使學習達到應有的效果,同時也有利于學生做好積極戰勝學習困難的心理準備。通過筆者自身的學習經歷和與眾多學習效果比較好的同學溝通,一致認為匯編語言程序設計在學習的開始階段,上課時間與自己理解消化的時間的比例以1∶6為佳。

2.2 使用多媒體教學方法,變抽象為具體

主要是通過制作多媒體課件,使用文字、圖形/圖像、動畫等素材,向學生動態展現學習內容里比較難想象和難理解的部分,幫助學生深刻理解80x86計算機組織和運行機制以及計算機工作原理的動態過程,從而為學生學習指令系統和尋址方式清除障礙,打下堅實的知識基礎,并為今后的硬件知識學習建立一個初步的知識框架。同時,幫助學生克服學習上的困難和挫折感,保持學習的自信和興趣。

2.3 引入“案例”式教學方法,加強理論聯系實際,理論指導實際工作

“案例”式教學方法的引入,可以使學生將學習的理論進行實踐,學生在學習理論的過程中始終在思考如何完成對應的案例,較好地激發了學生的學習熱情和學習興趣,同時也兼顧了學習的連貫性和整體性。如讓學生完成一個“從鍵盤輸入2個十連制數,然后比較它們的大小,最后在屏幕上輸出比較結果”的案例,可以讓學生完成對輸出/入、字符比較等理論知識的實踐,又可以使學生提高如何將有關的理論知識聯系在一起,解決實際問題的能力。

在每次實踐前,都要求學生做好實踐計劃,將有關理論知識進行復習。實踐完畢,都要求學生對結果進行原因分析,成功的,總結經驗;失敗的,吸取教訓。從而提高學生的理論水平,防止理論與實際脫節。

2.4 教學以學生為中心,課堂教學提倡精講多練

根據學生特點,對教材內容進行漏選,對涉及知識總體框架的重要知識點及其相互關系詳講,而對于偏、難的內容,則略講或不講。同時,在課堂教學中實時地,有針對性地進行課堂練習,學生通過練習產生的問題,可以得到及時的反饋,教師也可以及時準確地知道學生的不足,以便針對這些不足進行教學進度計劃的調整、加強和補充。這一方式不但提高了學生的學習興趣,鞏固了所學知識,也加強了教師和學生之間的互動和溝通,有利于建立學生對該門課程的學習自信心。

3 結束語

本文總結了獨立學院在匯編語言程序設計教學過程中存在的一些問題,并針對性的提出了一些思路和建議,并將其運用于實際的教學實踐中。實踐表明這些解決問題的教學思路方法具有一定的實際意義,取得了較好的教學效果,有利于培養高素質的應用型人才。

參考文獻:

[1] 玉婷.獨立學院Visual FoxPro 課程教學與考試改革初探[J].中國教育信息化,2012(2).

[2] 于麗波.三本院校學生特點分析[J].科技信息,2011(8).

第4篇

關鍵詞: 比較教學法;匯編語言; C語言;實踐;教學效果

中圖分類號:G642 文獻標識碼:A 文章編號:1009-3044(2013)10-2402-02

匯編語言程序設計是計算機專業學生的專業基礎課、必修課,屬于低級語言的程序設計,是硬件類課程和操作系統的先行課和基礎課,是高級語言程序設計的擴展。匯編語言是架起軟件、硬件知識的一座橋梁,它不但有利于學生理解計算機的工作原理,而且對學生程序設計能力的培養起著十分重要的作用。

在匯編語言課程教學中發現,匯編語言相對于其他高級語言來說缺乏直觀性與生動性,是一門比較抽象和理論化的課程,學生養成了“重軟件、輕硬件”的學習態度,往往會選擇一些容易學習的高級語言而忽視了對匯編語言的學習,因此在教學中普遍存在“教師難教,學生難學”的問題。

如何改善匯編語言課程的教學效果和教學質量,提高學生學習的興趣和主動性是當前急需解決的問題。將比較教學法引入到“匯編語言”的教學中,該教學方法注重將匯編語言和

高級語言進行比較教學,能夠極大提高學生的學習興趣,取得良好的教學效果。

1 比較教學法在匯編語言課程教學中的應用

1.1 比較教學法

比較教學法( 或叫類比教學法)是指在教學活動中將兩個或兩個以上的認識對象放在一定的條件下,按照同一標準進行對照比較,從而確定認識對象屬性的同異、地位的主次、作用的大小、性能的優劣、問題的難易或認識的正誤深淺,以達到辨識、了解和把握認識對象之目的的一種方法[1]。比較教學法是最常用的教學方法之一,也是使用范圍最廣的教學方法之一。

由于學生在學習匯編語言之前已經至少學習過如C這類高級語言,所以采用比較教學法不僅能更好地理解匯編語言,同時加深對高級語言的理解也有很大的好處。在實際教學過程中,可以將新的陌生的東西(匯編語言)和舊的熟悉的東西(C語言)做比較,找出它們之間相同的地方和不同的地方,然后進行差異化的學習,重在存同求異,這樣就會事半功倍,達到理想的教學效果。

1.2 比較教學法在匯編語言課程與C語言課程教學中的實踐

高級語言(如C語言)和匯編語言兩者都是程序設計的工具,在程序的基本功能和程序設計的基本問題上均有相應的實現機制,同時在某些方面是相通的,換句話說許多用匯編語言能作的工作也可以用C語言來完成。

2)兩操作數的類型匹配問題。

2 結論

限于篇幅,以上僅舉2個例子來說明教學過程中如何將匯編語言和C語言進行比較教學,已經取得了很好的教學效果。由于語言的相通性,實際上在整個匯編語言教學中還有很多知識點可以把C語言知識貫穿其中。通過比較教學,一方面學生可以更好地學習匯編語言的相關知識,極大地提高學習效率;另一方面,更提高了學生對C語言的更高層次上的認識,間接地對其他學科的學習也起到了很大的幫助作用。

參考文獻:

[1] 李運模.比較教學法論略[J].中南民族學院學報:人文社會科學版,2000(3).

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

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

第5篇

“匯編語言”課程是計算機科學、自動化及電子信息類專業的一門核心專業課程。[1-2]對于計算機及其相關專業的學生來說,匯編語言程序設計是需要掌握的重要專業基礎知識之一。了解和熟悉匯編語言可以優化學生的知識結構,提高學生的認知水平,增加學生的程序開發手段。相較于快速發展的可視化高級語言,作為低級語言的匯編語言,可讀性較差,比較繁瑣,不符合自然語言表述,學生普遍感到難學。因此,“匯編語言”課程如何優化教學質量、提高教學效果,是任課教師面臨的一個重要問題。[3]本文結合實際教學體會,就如何提高“匯編語言”課程教學效果進行了分析與探討。

一、匯編語言程序的特點

計算機是一個編碼的世界,只能識別和處理由“0”和“1”組成的二進制代碼的機器語言,這種指令代碼編寫易出錯且不易修改。于是,人們發明了“指令的助記符”,用助記符(mnemonic)代替操作碼,用標號(label)和地址符號(symbol)代替地址碼,用這種符號系統形成匯編語言。[4]因此,匯編語言本質上就是機器語言,只不過更容易被人讀懂且更容易記憶。使用匯編語言編程,可以對計算機內部硬件進行直接控制,合理地安排機器內部的各種資源。歸納起來,匯編語言程序有以下幾個主要特點:

一是與硬件的相關性。匯編語言與機器指令一一對應,不同類型的cpu內部硬件結構不同,因而有不同的指令系統,相應的匯編語言程序也就不同,其通用性、可移植性比較差。二是執行效率高。由于匯編語言與硬件相關,它可以有效、直接地控制機器,程序的執行代碼短、速度快,是其他高級語言難以企及的。三是編程、調試相對困難。為了有效地控制機器,匯編語言指令涉及到硬件資源的各種細節,如標志、堆棧、寄存器、存儲單元等。相對高級語言,其編程及調試比較繁瑣、復雜。[5-6]

二、明確教學目的,優化教學內容

1.激發學生的學習熱情

“匯編語言”與許多課程聯系緊密,如圖1所示,它是“操作系統”、“計算機接口技術”、“計算機組成原理”、“嵌入式系統”等課程的基礎,在開發嵌入式系統時更是必不可少的語言。“匯編語言”課程學習起來比較枯燥、學習周期較長,不像高級語言那樣上手比較容易且能很快見到效果。因此,應教育學生少一些急功近利的思想,應著眼于長遠的、全面的技術成長。有條件的教師可以將自己相關的科研成果帶入課堂,說明匯編語言有著廣泛的應用領域。在授課過程中,注意拓寬學生的知識面,結合具體的應用,激發學生的學習熱情。

2.優化教學內容

不同于高級語言的教學模式,匯編語言是一種硬件編程語言,是連接軟硬件的橋梁。一方面,匯編語言與芯片密切相關,學習匯編語言時應具備一定的硬件基礎知識,需要時穿插相關知識點,回顧前導課程的相關內容,如計算機結構等;另一方面,又不需要緊跟著產品來講授,只要選擇一種典型的匯編語言指令集講清楚、講透徹,使學生掌握學習與思考的方法,今后遇到其他的芯片,也就可以舉一反三,觸類旁通。

具體到一種匯編語言指令集,應突出其重點、難點,如分段管理技術、尋址方式、堆棧管理、中斷技術等。為了便于后續程序結構的學習,在學習尋址方式和指令集時就教會學生使用debug,講解了常用的調試命令,使學生能盡快上機實踐,驗證指令,編寫短小程序,看到運行結果,從而加深影響,鞏固所學的內容。由于匯編語言的指令很多,涉及的知識點抽象,剛開始接觸這門課程時,學生往往不太適應,前后的知識點容易混淆,教師應及時對講授過的內容進行比較與小結。課堂上,應適當增加講授例題的數量,不同的教學階段,例題的側重點不一樣。開始階段,例題主要涉及匯編語言格式與匯編語言指令;中間階段,例題講授的是如何用匯編語言指令實現匯編語言流程;后續階段,例題重點講解匯編語言程序設計算法的確定,分析、解決問題的思路與方法。而在學生掌握了基本內容及重點內容的基礎后,教師應提綱挈領,從系統的整體角度分析“匯編語言”課程在整個硬件知識體系中的作用,讓學生從更高層次理解、使用匯編語言。

3.多種教育手段相結合

隨著現代教育技術快速發展,多媒體技術在教學中有著廣泛的應用。在“匯編語言”課程中,可以利用多媒體課件圖文并茂的特點吸引學生的注意力,活躍課堂氣氛。例如,可以通過動畫形式將尋址過程、堆棧變化、循環移位、子程序調用、中斷調用過程等表示出來,將復雜的、抽象的問題簡單化、形象化,提高教學效率。而在確定匯編語言程序設計的算法,用匯編語言實現編程,培養學生的推理、思維能力時,采用傳統教學方法。對不同的知識點,結合不同的教學方法,有利于學生對不同教學內容的理解與掌握。

三、注重實驗環節,提高教學效果

1.實驗平臺及實驗內容

匯編語言程序設計要經過編輯、匯編、連接和調試等過程,如圖2所示,傳統的上機實驗一般是在dos操作系統環境下進行的。目前流行的是windows操作系統平臺,學生對dos操作環境相對陌生。為了提高上機的效率,應摒棄dos環境,采用基于windows操作系統的匯編語言集成實驗環境。在該環境下,可以方便編輯匯編語言程序,使用下拉式菜單或快捷按鈕進行匯編、連接及調試等工作,并可以預先設定段定義、過程定義等。

在實驗內容安排上,應根據授課的進度及學生的掌握程度,并與教學目標相匹配,精心選擇一些有代表性的、有實用價值的內容,盡量避免實驗內容過長、過雜等問題。實驗的內容應包括:指令系統及調試工具debug使用;匯編語言程序設計上機環境及過程;順序、分支、循環基本結構程序設計;子程序設計和宏匯編程序設計;中斷調用程序設計;綜合性實驗。

 

轉貼于

2.發揮學生在實驗中的主體作用

在整個實驗過程中,以學生為主體,教師只是起到組織、引導的作用。

實驗前,教師講解難點、重點及有關注意事項,點到為止,也可以先給出相關的問題,讓學生去思考、去觀察。要求學生對實驗內容進行預習,并在下次上實驗課時用提問、抽查等形式檢查。學生通過預習帶著問題進行實驗,可以提高學習的主動性,且能對知識點的領悟更深刻。

實驗中,鼓勵學生按照自己的思路去編寫、調試程序。對于學生在實驗過程中提出的問題,一般不直接給出答案,而是引導學生通過學過的理論知識自己尋找解決的方法。只要能達到預定的實驗目標,對實驗步驟及過程不做過多要求。對學有余力的學生,鼓勵他們在完成規定的實驗內容后,對補充題或對自己設計的問題進行實驗;而對基礎較差的學生,則鼓勵他們獨立地解決問題。

實驗后,要求學生及時對實驗進行歸納、總結,并撰寫實驗報告。

3.實驗實踐貫穿整個教學

“匯編語言”課程有其特殊性,只有通過不斷的上機實踐,學生才能加深對理論知識的理解,提高編寫程序的能力。因此,要轉變觀念,重視實驗教學,避免實驗教學流于形式。程序設計是一個調試修改語法及邏輯錯誤,最終得到正確程序的過程。教師應充分利用多媒體等手段,引導學生動手編程,通過實際例題觀察數據流變化,培養學生調試、修改程序的能力和意識。教師演示與學生實踐可以穿插交替進行。如果學生對自己編的程序沒有把握,則鼓勵他們上機進行驗證,反復地調試、修改、運行。對有些驗證性實驗,可以用作業的形式要求學生在課外完成。如用debug調試工具驗證各類指令的功能和格式,對標志位的影響,查看數及字符在存儲器中的存放形式,堆棧的變化等。既加深了學生對所學內容的理解,又為匯編語言程序設計打下了基礎。

本課程的目的是使學生掌握程序設計的方法,學會用匯編語言編寫程序。結合各章節所學的知識點,每次實驗要求學生編寫相關的程序,檢驗學生具體知識點的掌握程度。注意加強前后實驗之間的相互聯系,融會貫通各個知識點。隨著課程進展的加快,實驗內容應從比較簡單到相對復雜,再到課程結束階段,經過知識及多個實驗經驗的積累,使學生具備一定的程序設計能力。

第6篇

 

關 鍵 詞:C語言;計算機;軟件編程;實驗研究

一、C語言的概述

在1967年BCPL語言被英國MartinRichards 推出,到1970 年B 語言以BCPL 語言為基礎被美國Ken Thompson推出[1]。但是B 語言過于簡單,而且功能有限,經過研究者的多次試驗研究,在1972—1973 年,C 語言在B 語言的基礎上經過完善,被美國貝爾實驗室D.M推出[2]。在各種計算機編程語言中,C語言屬于一門高級語言,它是一切計算機語言的基礎,擁有高級語言和低級語言的特點,靈活方便,簡潔緊湊;而且它的語法限制不嚴格,程序員在設計時程序書寫自由。不僅能夠編寫系統軟件,同時還可以編寫應用軟件,能夠適應于多種操作系統,應用廣泛,可移植性強。總之,C語言對于信息技術的發展具有十分重要的作用和價值。

 

二、基于C語言的計算機軟件編程實驗研究

(一) C語言的編程技巧

1.靈活運用指針

在C語言編程的時候,指針是一種特殊類型的變量,它能夠幫助程序員有效的表達和解決程序設計過程中遇到的復雜問題,熟練掌握指針是必要的。指針具有三要素:指針名以及指針類型和值[3]。在編程時,指針和一般變量名相同,但是在類型以及值上具有區別,另外,指針不僅能夠被用于表示數組,還可以被作為函數的參數返回值。

 

2.C 語言的特有函數

在C語言編程的時候,有時需要用到一些特有函數。函數都具有一定的功能,同時函數名也反映了該函數的功能。在進行函數定義時,程序員需要把函數的名字、返回值類型以及參數名等各項都進行定義。另外,因為庫函數是由C 編譯系統提供的,這些函數均是系統首先定義好的,在程序調用的時候,程序員只需利用“#include 指令”把與之相關的頭文件包含到所用文件中即可[4]。例如,在程序運行的過程中,如果用到了sqrt函數,則為了保證程序運行下去,頭文件必須含有#include“string .h”。

 

3.算法技巧

在程序設計的過程中,算法是程序的靈魂,因此,掌握一定的算法技巧是必不可少的。通常情況下,算法不僅可以用自然語言表示,有的時候也利用流程圖表示。需要注意的是,利用流程圖表示算法時,程序設計員必須熟練掌握常用的流程圖符號[5]。且“數學乃是計算機之母”,牢固的數學知識同樣能夠提升編程效率。

 

4.位運算以及文件知識

相比其他計算機高級語言的運算方法,位運算作為C 語言的重要特色,具有獨特性和唯一性。位運算是以二進制位為對象,然后結合相關程序要求進行各種運算。文件包含有數據文件以及程序文件,是計算機不可缺少的,程序設計員在進行編程時,需要把所寫的程序存儲的文件之中,這樣可以便于程序員查找數據,提升查找效率。

 

(二) C語言和匯編語言混合的程序設計案例分析

在本次的實驗之中,在進行程序嵌入時,有其固定的格式,需要在嵌入的各行代碼之前加“asm”關鍵字,也可以直接在asm代碼塊中放入匯編語句。但是程序設計者在進行嵌入時,一定要注意滿足以下條件:匯編語言指令代碼中關鍵字asm必不可少,且要放在指令代碼之前;嵌入匯編語言指令代碼能夠和正常C語言程序混合,但是C語言的分隔符“;”必不可少;嵌入匯編語言時C語言的注釋分界符必不可少,分別是“/*”和“*/” [6]。

 

(2)首先編寫C語言程序以及匯編程序,然后獨立編譯目標代碼模塊,最終進行鏈接。

首先,在進行混合編程時,C語言程序能夠調用匯編語言的各種子程序以及其定義的變量,同時,C語言編寫的函數以及定義的變量等也可以被匯編語言調用。而且混合編程的過程中,一個任務往往是由若干個功能模塊組成,且不同的功能模塊均是利用合適的語言進行獨立編程,且以函數的形式存在。因此,程序設計者要根據每一模塊的特點選擇相應的語言和語言編程系統進行獨立編程,并形成目標文件,繼而連接目標文件,形成完整的可執行文件。

 

在混合編程的過程中,設計者需要注意五個問題:參數傳遞問題;寄存器的使用問題;存儲模式;變量以及函數的調用問題;子程序的返回值問題。

其中,關于參數傳遞問題,在進行C語言程序調用匯編程序時,必須遵從參數傳遞原則,利用堆棧把參數傳遞給匯編程序。例如,在C語言程序中含有函數:voidaa(char*p,int i),這個函數是利用匯編語言進行編寫的,如果編譯是在小內存模式下實施的,系統在進行調用時,則寫成aa(&q , n);運行時程序首先把n壓入堆棧,然后再把&q壓入堆棧,當參數傳遞過來并被匯編語言的子程序取得時,BP寄存器便被用作基地址寄存器,實現對棧中所存數據進行存取操作。通常情況下,由于調用的子程序和C語言程序往往使用同一個堆棧,所以在程序執行時,匯編語言子程序需要執行兩條指令:push bp pop bp、sp[7]。

 

2.混合的軟件編程實例分析

三、小結

綜上所述,隨著信息技術的不斷發展,人們對于計算機軟件編程的功能要求也將越來越高,而利用C語言能夠實現計算機軟件的多種功能,因此研究者應當強化對于C語言的計算機軟件編程實驗研究,開發功能更加強大的軟件。

 

參考文獻

[1] 侯宏霞.提高“匯編語言”課程實驗教學質量的幾點思考[J].內蒙古農業大學學報(社會科學版),2011(01):25-26.

[2] 劉海峰.以培養實踐能力為導向的“C語言”教學方法探討[J].科技經濟市場,2008(12):33-34.

[3] 阿娜古麗·阿布拉.C語言與匯編語言相互調用實現混合編程[J].電腦編程技巧與維護,2009(10):71-74.

[4] 劉丹,劉德山.C語言程序設計課程綜合性和設計性實驗研究[J].計算機教育,2012(09):31-32.

[5] 王應軍,曲培新,趙晨萍.ARM匯編語言與C語言混合編程的實現方法[J].科技信息,2010(03):69-71.

[6] 方艷紅,趙海龍.計算機高級語言程序設計類課程實踐教學改革研究[J].中國科技信息,2008(19):12-14.

第7篇

關鍵詞:計算機組成原理;匯編語言;教學改革

中圖分類號:G642.3 文獻標識碼:A 文章編號:1002-4107(2016)07-0014-02

一、“計算機組成原理”課程的特點

“計算機組成原理”是研究生入學考試的必考科目。該課程以馮?諾依曼型計算機為基礎,圍繞計算機的運算器、控制器、存儲器和輸入輸出設備等五大部件詳細介紹它們的工作原理與算法以及具體實現的電路結構。通過學習本課程,要求學生熟練掌握單總線結構CPU的工作原理和設計實現的方法,同時要求學生初步掌握精簡指令系統、流水線結構、多體并行存儲器、中斷的工作原理等知識,為后續課程“微機原理與接口技術”、“計算機系統結構”做好準備。該課程首先講授了8086CPU的編程結構,然后引申出8086匯編語言的尋址方式和指令系統,學生在掌握上述知識的基礎上,進行匯編語言程序設計。匯編語言程序設計可以讓學生加深對程序設計方法的理解,同時程序的編寫和調試使學生對計算機硬件有一個感性的認識, 為以后他們學習“微機原理與接口技術”、“操作系統”等課程做準備。

根據國家教育部高教教執委的新的教學改革精神,結合我院的具體情況,我院將“計算機組成原理”與“匯編語言”兩門課程合并成一門全新的“計算機組成原理”課程。在新的教學體系中,我們將兩門課程有效地結合起來去糟取精刪繁就簡,舍去了兩門課程中的重疊部分而突出重點,形成了一套新的教學體系。

二、“計算機組成原理”與“匯編語言”教學內

容的融合

在傳統的“計算機組成原理”課程中,教師始終圍繞著計算機的五大部件按照運算器、存儲器、控制器、輸入輸出系統這個順序進行講解,在講授過程中經常會用到一些實例進行說明,而很多時候是以匯編語言做例子講解的,兩門課程融合在一起的最大好處就是教師在講授“匯編語言”的部分時,可以更好地兼顧“計算機組成原理”,讓這兩門課程做到無縫對接。

在基礎知識部分,我們首先要介紹馮?諾依曼型計算機的特點。馮?諾依曼型計算機是串行計算機的始祖,所有的串行計算機都要符合馮?諾依曼型計算機的特點,這是“計算機組成原理”基礎知識部分的重點。在課程講授過程中,教師都會畫一幅五大部件的關系圖,通過圖形示意來表示一條指令是如何在五大部件之間流動的,從而使用戶從外部觀察到計算機處于運行狀態。我們考慮從這里引入8086CPU的編程結構,從計算機組成原理過渡到匯編語言,讓指令舉例更加具體化,再結合指令的尋址方式,借機說明8086的匯編語言指令是如何在CPU中執行的。

在接下來的講授過程中,我們將介紹8086匯編語言的尋址方式和指令系統。由于在計算機組成原理課程中也有一章介紹指令系統,我們可以把這個部分與匯編語言的內容合并,以計算機組成原理的部分強調基本概念,以匯編語言的內容來強調具體應用,把內容更加具體化,舉例更具有針對性,可以使學生更好地理解尋址方式和指令系統。在這里我們在教學上做了一點改變,我們考慮到匯編語言指令數目較多的特點將指令分類,每類指令選出一到兩個具有代表性的指令進行詳細說明,其他略講,然后采用寫出指令執行結果的方式進行大量練習,從而鞏固這部分知識。

在講授了匯編語言的程序設計方法之后,再講授計算機組成原理部分的運算器與運算方法部分。在這部分我們可以利用學過的匯編語言知識,結合布斯算法和加減交替法編寫定點數乘除法的匯編語言程序,還可以編寫浮點數運算的模擬程序。在講授控制器的部分時,我們可以設計一個類8086的CPU,把它作為課堂上的CPU設計舉例,這樣把一條8086匯編語言指令放在這個CPU中運行,可以更直觀地反映指令的工作細節,促進學生對控制器的工作原理和匯編語言的理解。

三、“計算機組成原理”與“匯編語言”實驗內

容的融合

“計算機組成原理”與“匯編語言”都有實驗課,由于在講授上先講“匯編語言”的內容,因此相關實驗先進行,然后進行“計算機組成原理”的實驗。我院的“計算機組成原理”實驗課程使用的是由清華大學計算機學院研制開發的TH-union+教學實驗系統,該系統主要用于“計算機組成原理”課程的硬件教學實驗,還支持監控程序、匯編語言程序設計。在硬件上同時實現了硬布線方式和微程序方式兩種控制器結構,既支持用中小集成度的芯片實現CPU的方案,又支持用高集成度的FPGA門陣列實現CPU的方案。在軟件上可實現指令級模擬,也可以軟件模擬硬布線和微程序的操作,為學生學習硬件理論知識起到了重要的輔助作用。但是該實驗系統的匯編語言指令與8086匯編語言是不兼容的,這使學生在短期內很難快速掌握實驗系統的匯編語言指令,因此經課程組全體教師研究決定,另外開發一款新的匯編語言轉換軟件,用來實現兩種不同種類的匯編語言互相轉換。

該軟件是利用linux模擬環境Cygwin開發實現的。Cygwin是cygnus solutions公司開發的一個在windows平臺上運行的類UNIX模擬環境。在這里我們主要使用了Cygwin開發環境里的flex和gcc兩個工具軟件。利用flex工具軟件編寫的源代碼必須轉換成c語言代碼格式,然后由linux下的c語言編譯器gcc編譯成可執行文件,完成最后的開發。

由于TH-union+教學實驗系統的匯編語言指令共48條,采用精簡指令系統,每條指令的尋址方式是固定的,因此不單獨設置關于尋址方式的標志位,當指令進行譯碼操作的時候,實驗系統電路通過分析指令的操作碼既了解了指令的操作功能也了解了指令操作數的尋址方式。而8086匯編語言指令是一個復雜的指令系統,每條指令對應著多種不同的尋址方式,因此我們把教學實驗系統的匯編語言看成是8086匯編指令系統的子集。通過對轉換程序my的使用,幫助學生對比兩種匯編語言之間的相同點和不同點,通過對比學習,學生可以更快速地熟悉實驗系統匯編語言。

在這里對于不可轉換的匯編語言指令可采取兩種處理方式:方式一,發出警告提示并忽略此條指令;方式二,發出錯誤提示并強行結束程序轉換。轉換程序your分析了操作碼之后開始分析操作數的尋址方式。在這里,我們假設所有指令都采用雙操作數,因此在結構體中設置了兩個對應尋址方式的變量。具體操作時,如果分析出該操作數的尋址方式可以被實驗平臺支持,那么就將對應數值保存在結構體的對應變量中以便轉換,如果不是實驗平臺支持的尋址方式,系統將提示用戶:“你的程序中使用了不可轉換的尋址方式”,并強行結束轉換。在尋址方式轉換過程中,有一些特殊情況需要系統自動追加指令。

最后,要對輸入輸出指令單獨處理。輸入輸出操作是后續課程“微機原理與接口技術”的重要知識點。在編寫匯編語言程序過程中,當遇到輸入和輸出操作都是直接調用DOS中斷或BIOS中斷來實現的。但是教學實驗系統沒有任何中斷程序輔助操作,遇到輸入和輸出操作只能由學生自己編寫。在編寫8086匯編語言程序過程中,凡是遇到輸入和輸出操作都通過調用這兩個宏來實現。每次進行輸入輸出操作時必須先對指定的狀態寄存器的標志位進行判斷,以確定硬件是否準備好,是否可以進行輸入輸出操作。具體做法是使標號由英文字母和數字構成,每次產生新的標號,后面的數字部分就加1,保證新標號與舊標號不同。

“計算機組成原理”和“匯編語言”是計算機科學與技術、軟件工程專業的專業課程,這兩門課程存在著很多聯系同時也有一些區別,把這兩門課程合并成一門全新的“計算機組成原理”課是我院一項新的教學改革方案。如何把兩門課程很好地融合在一起就成了課程組面臨的一個新的挑戰,本文結合課程組全體教師的多年教學經驗,拋磚引玉,初步提出了一些在教學和實驗上的改革方案,希望各界同人多提寶貴意見。

參考文獻:

[1]唐朔飛.計算機組成原理:第二版[M].北京:高等教育

出版社,2008.

[2]王誠,劉衛東,宋佳興.計算機組成與設計:第三版

[M].北京:清華大學出版社,2008.

[3]沈美明,溫冬嬋.IBM PC匯編語言程序設計:第二版

[M].北京:清華大學出版社,2001.

第8篇

關鍵詞:匯編語言 I/O 子程序 庫

中圖分類號:TP313 文獻標識碼:B 文章編號:1002-2422(2008)03-0086-02

設計的I/O子程序庫包括16位版本和32位版本,可分別應用于16位和32位匯編語言應用程序,提供的子程序功能包括不同數制和字符串的輸入與顯示,狀態標志的顯示,滿足匯編語言程序設計的通常要求。

1 設計方案

1.1子程序功能需求

根據在匯編語言程序設計中的通常要求,子程序所提供的功能主要包括鍵盤輸入和顯示器顯示,輸入和顯示的內容可以是不同的數制與字符串格式。如表1所示。

1.2子程序庫結構

為了方便整個子程序庫的設計,設計了一些通用予程序。在實現提供給用戶使用的子程序時,充分利用這些通用子程序,簡化了子程序的代碼編寫,減少了子程序庫的長度。主要子程序之間的關系如圖1所示。

字符輸入和顯示子程序READC、DISPC是整個子程序庫輸入輸出的基礎。利用這兩個子程序實現了字符串輸入和顯示子程序READMSG和DISPMSG。子程序READMSG和DISPMSG又是不同數制數據輸入和顯示的基礎:通過調用READMSG讀入字符串,然后調用字符串轉換子程序STRTOBIN、STRTOHEX、STRTOUI和STRTOSl分別將字符串轉換為不同數制的數據,從而實現了不同數制輸入的子程序READBIN、READHEX、READUI、READSI等;通過調用DISPMSG顯示字符串,然后調用數據轉換字符串子程序BINTOSTR、HEXTOSTR、UITOSTR和SITOSTR分別將字符串轉換為不同數制的數據,從而實現了顯示不同數制的子程序DISPBIN、DISPHEX、DISPUI、DISPSI等。

設計的16位和32位的子程序庫提供的子程序功能都是相同的,區別在于16位的字符輸入子程序是利用DOS系統調用實現的,而32位的字符輸入子程序是利用WIN-DOWS API函數實現的。其他子程序則可以通用。

各個子程序匯編后,由庫管理工具LIB.EXE生成16位子程序庫I/O16.LIB和32位子程序庫I/O32.LIB。

1.3參數傳遞

匯編語言子程序的參數傳遞可以采用寄存器傳遞,共享內存變量和堆棧傳遞三種方法。堆棧傳遞參數時,可以用MASM提供的偽指令PROTO來聲明子程序,用INVOKE來調用子程序。這兩個偽指令在聲明和調用子程序時相對于CALL指令和PROC偽指令要簡潔得多。使用堆棧傳遞參數也是高級語言通常使用的子程序傳遞參數的方法,用堆棧傳遞參數的子程序可以被高級語言調用。子程序的返回參數也遵循高級語言子程序的規范,采用寄存器EAX返回子程序的出口參數。

1.4宏命令

調用子程序需要用專門的調用指令并遵循一定的格式要求,這對于初學者來說有一定的難度。當子程序的參數比較多時,調用子程序的編碼量較多,設計了調用子程序的宏指令,利用宏指令來實現對應的子程序調用,格式簡單,使用方便,尤其適合初學者應用。為提高代碼的復用性,被調用子程序的聲明和宏定義都放在包含文件IO.INC中,在匯編語言應用程序中用INCLUDE語句包含該文件即可。

第9篇

關鍵詞微機原理 匯編語言 整合 教學方法

中圖分類號:G642文獻標識碼:A

隨著計算機技術和通信技術的發展,微型計算機的應用越來越廣泛,“微機原理與接口技術”課程也成為除計算機專業外,機械、電子、通信、自動化等相關專業必設的專業基礎課。“微機原理與接口技術”課程在一些高校已經逐步和“匯編語言程序設計”課程整合到了一起。這是由于微機原理中要使用匯編語言的知識,匯編編程中又牽涉到微機原理的一些概念。兩者相輔相成,且這兩門課程都有一定的教學難度,要將它們整合到一起,實現相互印證,相互促進,更是一件難事。通過近幾年的教學實踐,筆者總結了一些經驗,介紹如下。

1 教學過程中注意體現匯編語言本身的優缺點,引導學生學習的方向

學生在學習本課程之前,一般都有過計算機高級語言的學習基礎。與高級語言相比,匯編語言存在一些固有的缺點,如對硬件的依賴性較強,可移植性較差,解決問題的步驟較為繁瑣,有很多細節問題需要考慮等。①這就好比用戶首先學習了如何在飯店點菜,已經習慣了一套簡易的流程,現在要學習自己做菜,要考慮的細節更多,也就覺得更麻煩。但學會自己做菜,有利于我們了解菜系的搭配原理,火候問題等,從而制作出更可口的菜肴,如同匯編語言的學習有利于用戶了解計算機的工作原理,從而更好地理解微機原理的相關問題。同時,匯編語言的一些細節,也能幫助用戶簡化一些操作。例如對于求解1+2+3+……+100②這個問題,可以利用LOOP語句中CX每次自減1的特點實現,程序③如下:

MOVAX, 0;用來放累加和

MOVCX, 100;循環次數為100

NEXT:ADDAX, CX ;AX+CX的和傳送給AX

LOOPNEXT ;CX減1,判斷CX不等于0時,循環,從NEXT標號處執行

這比用高級語言實現更簡潔。匯編語言的優勢更多的體現在對硬件芯片的編程,例如對8253、8255芯片的初始化編程,程序段比較簡潔、直觀。教學過程中,要注意引導學生的學習方向,避免學生在學習過程中產生厭學情緒,要讓學生看到匯編語言的優點。

2 找到知識的結合點,加強知識的聯系

匯編語言是微機原理課程的一門工具性語言,兩門課程中有很多交叉結合的知識點。如果在微機原理部分沒有理解CPU的內部結構和工作原理,大量的指令就無法正確運用,也就更難靈活運用匯編語言進行編程。④例如匯編語言中大量采用寄存器結構,很多指令中都有指定的寄存器用法,而寄存器是CPU內部結構的重要組成部分,是微機原理的一個重要的知識點,各種寄存器的用法又可以通過尋址方式體現出來。比如基址指針寄存器BP在尋址做基址中使用時,默認數據在堆棧段中,在匯編語言講解子程序的參數傳遞一例時,主程序用PUSH語句將參數放入堆棧,子程序中引用參數時,并不采用數據出棧,而是以BP為基址采用寄存器間接尋址方式訪問堆棧。再如,微機原理中講解外設與計算機的數據傳送時,可注重介紹IN,OUT輸入輸出指令在執行時,對接口電路的影響,即匯編語言指令具體執行對硬件的影響,如M/,,信號以及地址譯碼的變化。⑤

3 重視實驗教學,體現指令與硬件的結合,鼓勵進行設計型實驗

微機原理很多知識需要通過實驗來加以驗證和運用,上好實驗課是教學的重要環節。但該課程的實驗課大部分都是驗證性實驗,都在演示課本上的例子,這對于學生充分理解微機原理,熟練掌握匯編程序設計和鍛煉實踐能力來說是一種限制。我校實驗采用DJ系列8086/8088微機系統,其中實驗十五:簡單I/O口控制,實現的功能是利用開關K1~K8控制LED燈L1~L8,一個開關控制一個燈的亮滅,⑥所用接口芯片為74LS244,74LS273。該實驗為驗證性試驗,即學生可按實驗指導書完成硬件連線,運行現有程序,即可實現功能。如此則學生較難留下深刻印象,也不能很好地理解硬件和軟件的配套關系,因此我要求學生在完成實驗的基礎上,對實驗進行修改,例如當地址線重新連接后,端口地址如何變化;如何修改程序,實現一個開關控制8個燈的亮滅。學生通過自己思考,動手實踐,實現功能,從而留下深刻印象,加深了對知識的理解,教學效果也圓滿實現。對于實驗教學,我們應在做好驗證性實驗的基礎上,多挖掘實驗儀器的潛力,多讓學生思考,多做一些有設計環節的實驗,從而提高學生的實踐能力。

4 合理安排課時,考核時注意知識點的傾向性

適當調整教學內容講授的次序和學時分布,講授內容有所側重,建立一個合理的教學體系。由于匯編語言在微機原理這門課程中主要是起到一門工具性語言的作用,即很多微機原理的知識需要通過匯編編程加以體現,因此在匯編語言的教學過程中,不要過于強調如何解決那些計算機高級語言擅長解決的軟件問題,這本來就不是匯編擅長的領域。匯編的教學中只要求學生熟悉匯編語言指令的基本功能及使用要求,熟悉匯編語言解決問題的思路即可,不要花費過多的時間,應將教學的側重點放在匯編語言與微機原理的結合處,主要是對芯片控制的編程。在考核的內容上,也應側重于匯編語言在解決硬件相關問題的作用,從而引導學生的學習方向。

通過對匯編語言和微機原理整合課程的教學改革,使學生對該課程產生了更濃厚的學習興趣,取得了較顯著的教學成果,同時也還存在一些不完善的地方,需要在以后的教學實踐中不斷改善。

注釋

①許穎梅.對匯編語言和微機原理課程整合的探討[J].福建電腦,2007.1.

②楊季文.80X86匯編語言程序設計教程[M].北京:清華大學出版社,2004.

③趙樹升,趙雪梅.現代微機原理及接口技術[M].北京:清華大學出版社,2008.

④馬浩.淺談微機原理與匯編語言教學改革[J].科技創新導報,2009.17.

第10篇

匯編語言與C語言均屬于編程語言,但是二者之間存在著根本上的不同。在開發軟件的過程當中使用這兩種語言混合程序設計的技術是一種有效的程序設計方法,不僅能夠有效提升工作的效率,還可以提升程序的性能。本文主要介紹了匯編語言與C語言混合程序設計的方法,希望給二者之間更好的銜接提供一定技術方面的支持。

【關鍵詞】匯編語言 C語言 設計技術 混合程序

匯編語言是一種面向機器的編程語言,運算速度快,在使用匯編語言的過程可以通過提高存儲器運行速度來提升其存儲空間,另外,匯編語言其控制作用力應用在硬件上也有著無法取代的優點。同時匯編語言也有著程度較高卻復雜和移植性差等缺點,但是在實際的操作中,硬件還有精確定的過程中必須要用到匯編語言。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.

作者簡介

楊波(1979-),女,侗族,貴州省凱里市人。理學學士學位。現為黔東南民族職業技術學院汽車與機電工程系講師。主要研究方向為軟件開發。

第11篇

1現狀及發展趨勢

大多數高等院校計算機本科專業涉及的硬件教學課程主要有“數字邏輯”、“匯編語言程序設計”、“計算機組成原理”、“計算機系統結構”、“微機原理與接口技術”、“單片機”、“嵌入式系統”等,在新形勢下部分課程內容設置顯得不夠合理,部分教學內容與實際應用脫節,影響了教學效果,無法完全滿足教學大綱中要求的動手能力培養,更無法有效培養同學們的創新意識。目前,作為計算機教學重要專業基礎課程的“數字邏輯”,要求學生掌握組合邏輯、時序邏輯電路的分析和設計方法,研究對象主要是分立元件、通用中小規模集成電路及基本的可編程器件等,介紹的方法也以傳統方法為主,已無法適應目前應用的需要;作為專業主干課程的“計算機組成原理”、“計算機系統結構”,主要內容是討論計算機的結構、各功能部件原理及設計方法,同時介紹當前的新技術、新方法,目的是讓同學們熟悉計算機的結構,為以后應用和設計計算機系統打下基礎。目前大家普遍采用的教材在部件設計中討論的方法主要是硬布線邏輯或微程序設計方法:硬布線邏輯運行速度高,但缺乏靈活性;微程序設計方法有一定的靈活性,但資源占用多,運行速度慢。盡管這兩種方法對于理解計算機組成原理不失為一種較好的選擇,但由于缺乏實際應用背景,學生學習興趣受到影響,教學效果也大打折扣,提高學生的動手能力、培養創新意識更是無從談起。

“匯編語言程序設計”課程也存在類似尷尬,討論以16位個人計算機為背景的匯編語言程序設計知識,適合入門和了解基本原理,但與“計算機組成原理”、“計算機系統結構”課程一樣,由于缺乏實際應用背景,教學目標無法完全實現。隨著電子設計自動化(EDA)、系統編程(ISP)、片上系統(SOC)等技術的發展,32位個人計算機的應用已很成熟,多核64位計算機應用也將逐步成為主流。嵌入式系統設計需要較強的軟硬件知識綜合應用能力,因此在計算機硬件課程的教學中應加大相關新技術的比例,并根據實際及時調整教學內容。國外許多知名高校本科專業的教學內容已經作了適時調整,如麻省理工學院非常注重學生的設計能力的培養,為此專門開設了“計算機系統設計”課程,要求學生在實踐環節中自主設計ALU、單指令周期CPU、多指令周期CPU乃至流水線32位MipsCPU和Cache;斯坦福大學也有相似的課程和實驗環節;加州大學伯克利分校和楊百翰大學在基于可編程邏輯的超級計算機研制方面也有大量成果。當前在國內,案例教學已被越來越多的人所接受,尤其是在一些法學、工商管理類高校已經開始廣泛運用。案例教學法是一種動態的、開放的教學方法,目標是解決學生如何用更有效的方式獲得知識以提高應用能力的問題。案例教學法具有綜合性、交互性、啟發性、針對性和可操作性等多種特征,它的使用大大縮短了教學理論與實際應用之間的差距,同時對教師的教學觀念產生了重大的影響。鑒于計算機專業知識與實際應用結合緊密的特點,教學中尤其適合案例式教學。目前在國內計算機課程的教學中,案例教學還處于一個起步階段,主要表現在:案例教學比例不夠,沒有形成完整的體系;案例數量不足,質量欠缺;許多高校盡管重視案例教學的應用,但是在案例的搜集、整理與分析等方面相對滯后;案例陳舊,缺乏代表性等。

2以ISP技術為主線改革計算機專業硬件課程教學體系和教學內容

計算機本科專業涉及的硬件教學課程按合理教學順序一般為“數字邏輯”、“匯編語言程序設計”、“計算機組成原理”、“計算機系統結構”、“微機原理與接口技術”、“單片機”、“嵌入式系統”等,一些課程可以在時間上重疊,如“數字邏輯”、“匯編語言程序設計”等。由于ISP、EDA技術可以靈活地開發出具有自主知識產權的硬件產品,是目前工程實踐領域和芯片設計領域運用最廣泛也是最有應用前景的技術,因此在計算機硬件課程的教學中應該把相關技術列為重要內容,即以ISP、SOC技術為主線,使相關課程形成一個完整的體系,達到培養創新性人才的目的。為了實現這一目標,在“數字邏輯”課程中,應大幅增加可編程邏輯技術的比重,重點討論用EDA方法,利用ISP技術、SOC技術設計IP核的方法,使學生對相關技術的應用及發展趨勢有一個全面的理解,并具備基本的實踐能力;在“計算機組成原理”課程中增加計算機設計原理和實踐的內容,也可考慮再單獨增加一門計算機設計課程以替代目前“計算機組成原理”課程設計,在該課程中重點討論如何采用EDA方法,利用ISP技術、SOC技術設計計算機各部件如CPU、Cache等,通過實際應用和實踐進一步加深對相關技術的理解和掌握。在“微機原理與接口技術”課程可以考慮以16位計算機應用知識入門,以討論32位計算機的應用為重點。相應的,作為“微機原理與接口技術”課程的先行課程,“匯編語言程序設計”課程也應把相應的內容整體提升到32位,考慮到學習過程的先易后難,可以先介紹16位匯編語言程序設計知識作為入門,再對32位匯編語言程序設計相關內容展開。

單片機系統本質上也是嵌入式系統,嵌入式系統是針對應用或用戶定制的完整、高效的計算機系統,嵌入式系統設計需要較強的操作系統原理、應用程序設計和硬件設計方面知識的綜合應用能力,其別是硬件系統設計能力可以通過以上幾門硬件課程的系統學習逐步培養,因此相關課程的教學內容應注意銜接,同時遵循先易后難的原則,面向實際應用,以提高動手能力、增強創新意識為目的。針對實踐教學,目前相關課程的實驗教學的實驗項目及內容固定,大多為驗證性實驗,實驗步驟程式化,許多同學按教學實驗計劃做完實驗,仍然無法充分理解課程的主要內容,無法真正擁有教學大綱所要求的動手能力。更重要的是計算機技術一直處于高速發展中,高等院校的計算機教學理應不斷地適應這種要求,相關的實驗教學應適時地調整教學內容。解決問題的一個好思路是利用ISP、SOC技術開發出一種內容可定制的硬件課程教學實驗平臺,由于作為控制對象的電路是相同或相近的,可以設計為通用模塊,而實驗平臺控制部分則可以利用可編程邏輯改變,以適應不同的課程。如控制部分設計為基本CPU即可做“計算機組成原理”課程的相關實驗;控制部分設計為單片機即可做“單片機”課程的相關實驗;甚至控制部分可以設計為個人計算機CPU,配合有關的接口電路,即可做“微機原理與接口技術”課程的相關實驗等。在我院的計算機本科專業相關硬件課程教學實踐中,我們已作出了一些有益的探索,如我院“數字邏輯”教學大綱已在近年作過相應調整,EDA技術、可編程技術的理論和實踐教學內容的比例從原來的20%增加到60%以上,經過多年的建設,“數字邏輯”課程在今年被評定為“湖北省精品課程”;在“計算機組成原理”課程中引入利用ISP技術設計CPU軟核等教學和實踐內容;“匯編語言程序設計”、“微機原理與接口技術”課程中也增加了32位計算機相關內容的學習和討論,新的實驗設備可以進行32位的相關實驗等,這些安排增強了學生的學習興趣,學生學習的主動性也明顯提高了。

3采用案例教學法作為計算機專業硬件課程教學的主要方法

案例教學法是一種事半功倍的教學方法,在教學過程中圍繞事先精選的典型的、具有工程背景的實際案例進行討論,可以為同學們模擬實際應用的場景,獲得近似于實戰的經驗。為完成設計目標,同學們自然會自己主動學習,在這一過程中掌握知識,并學會應用知識,提高解決問題的能力;也能通過用不同的途徑解決問題,培養創新意識。這樣教師在授課中可以把精力集中于教學內容的總體把握上,而不需要過分在知識細節上消耗時間,提高了教學效率。案例教學法關鍵在于選擇合適的案例,案例首先必須有代表性和實時性,必須是實踐中的典型應用實例。在實踐中應用的幾率高,具有普遍意義,這樣的實例在教學過程中值得花費精力討論和設計,才是有意義的。同樣重要的是案例需具有實際工程背景,學生可以面對具體的實際問題和特定的環境,有針對性地通過自主學習和思考進行設計,培養實際解決問題的能力。案例還應該形成相對固定的案例集,并具備一定的開放性,應定期對案例集進行評估,剔除一些過時的案例,增加一些新的典型應用實例。這樣就保證了案例的典型性、實時性及工程背景。在教學實踐中,我們把案例教學法作為主要方法,并把案例分為4類:一是問題評論型,給出問題和解決問題的方案,讓學生去評價;二是分析實現型,不給出解決方案,要求學生討論分析以提出方案;三是實際模擬型,是指在教學過程中依據教學內容,讓學生分別充當不同的角色,進行模擬性的實踐活動;四是發展開放型,通過案例發現新的理論生長點,討論相關理論的發展趨勢。我院在相關課堂教學中采用的部分案例如表1所示。在“數字邏輯”、“計算機組成原理”等課程的重點章節教學中,我們通過采用上述案例法,調動學生成為積極參與者,而不是消極被動的聽眾,在案例學習和討論中,鼓勵學生提出更多解決問題的辦法,在課堂上營造出積極發表意見和爭論的氣氛。這樣提高了學生的學習興趣,教學效果有明顯改善,學生的動手能力有了顯著增強。

4總結

為實現面向實際應用提高學生動手能力、增強創新意識、培養創新型人才、確定完整合理的計算機本科專業硬件理論教學和實踐教學體系的目的,我們提出了以ISP技術為主線的計算機專業硬件課程教學改革方案。它的主要內容為兩方面:一是調整現有教學體系和教學內容,如在“數字邏輯”、“計算機組成原理和系統結構”、“嵌入式系統設計”等課程中以“數字邏輯”課程為先導,以ISP、SOC技術為主線貫穿于各相關課程教學過程中;在“匯編語言程序設計”、“微機原理與接口技術”等課程中把主要內容全面提升到32位等。二是在教學中運用案例法,使學生成為教學活動的主體,形成學生自主學習、合作學習、研究性學習和探索性學習的開放型學習氛圍。充分發揮案例教學有利于提高學生分析問題和解決實際問題的能力、有利于促使學生學會學習、有利于促使學生學會溝通與合作的優勢。實踐表明以ISP技術為主線的計算機專業硬件課程教學改革,符合國家高等質量工程建設中培養創新性人才的規劃,有效地增強了學生的動手能力和創新意識。我們也意識到計算機工程教學是一個復雜的過程,牽涉到許多方面,我們將在實踐中探索教學規律,不斷提高教學水平,進一步改善教學效果。

第12篇

關鍵詞:高效;空間;位;嵌入

中圖分類號:G623.58

C語言程序設計方法多種多樣,一般以根據實際情況選擇程序設計方法。現根據不同情況說明幾種不同的高效編程方法。

1.以空間換時間

計算機程序中最大的矛盾是空間和時間的矛盾,那么,從這個角度出發逆向思維來考慮程序的效率問題,我們就有了解決問題的第1招--以空間換時間。比如說字符串的賦值:

方法A:通常的辦法

#define LEN 32

char string1 [LEN];

memset (string1,0,LEN);

strcpy (string1,"This is a example!!");

方法B:

const char string2[LEN] ="This is a example!";

char * cp;

cp = string2 ;

使用的時候可以直接用指針來操作。

從上面的例子可以看出,A和B的效率是不能比的。在同樣的存儲空間下,B直接使用指針就可以操作了,而A需要調用兩個字符函數才能完成。B的缺點在于靈活性沒有A好。在需要頻繁更改一個字符串內容的時候,A具有更好的靈活性;如果采用方法B,則需要預存許多字符串,雖然占用了大量的內存,但是獲得了程序執行的高效率。

如果系統的實時性要求很高,內存還有一些,那我推薦你使用該招數。該招數的變招--使用宏函數而不是函數。舉例如下:

方法C:

#define bwMCDR2_ADDRESS 4

#define bsMCDR2_ADDRESS 17

int BIT_MASK(int __bf)

{

return ((1U

}

void SET_BITS(int __dst,

int __bf, int __val)

{

__dst = ((__dst) & ~(BIT_MASK(__bf))) |

/

(((__val)

& (BIT_MASK(__bf))))

}

SET_BITS(MCDR2, MCDR2_ADDRESS,RegisterNumber);

方法D:

#define bwMCDR2_ADDRESS 4

#define bsMCDR2_ADDRESS 17

#define bmMCDR2_ADDRESS BIT_MASK(MCDR2_ADDRESS)

#define BIT_MASK(__bf)

(((1U

#define SET_BITS(__dst, __bf, __val)

/

((__dst) = ((__dst) & ~(BIT_MASK(__bf)))

| /

(((__val)

& (BIT_MASK(__bf))))

SET_BITS(MCDR2, MCDR2_ADDRESS,

RegisterNumber);

函數和宏函數的區別就在于,宏函數占用了大量的空間,而函數占用了時間。大家要知道的是,函數調用是要使用系統的棧來保存數據的,如果編譯器里有棧檢查選項,一般在函數的頭會嵌入一些匯編語句對當前棧進行檢查;同時,CPU也要在函數調用時保存和恢復當前的現場,進行壓棧和彈棧操作,所以,函數調用需要一些CPU時間。

而宏函數不存在這個問題。宏函數僅僅作為預先寫好的代碼嵌入到當前程序,不會產生函數調用,所以僅僅是占用了空間,在頻繁調用同一個宏函數的時候,該現象尤其突出。

D方法是我看到的最好的置位操作函數,是ARM公司源碼的一部分,在短短的三行內實現了很多功能,幾乎涵蓋了所有的位操作功能。C方法是其變體,其中滋味還需大家仔細體會。

2.數學方法解決問題

現在我們演繹高效C語言編寫的第二招--采用數學方法來解決問題。數學是計算機之母,沒有數學的依據和基礎,就沒有計算機的發展,所以在編寫程序的時候,采用一些數學方法會對程序的執行效率有數量級的提高。

3.使用位操作

實現高效的C語言編寫的第三招--使用位操作。減少除法和取模的運算。在計算機程序中數據的位是可以操作的最小數據單位,理論上可以用"位運算"來完成所有的運算和操作。一般的位操作是用來控制硬件的,或者做數據變換使用,但是,靈活的位操作可以有效地提高程序運行的效率。

運用這招需要注意的是,因為CPU的不同而產生的問題。比如說,在PC上用這招編寫的程序,并在PC上調試通過,在移植到一個16位機平臺上的時候,可能會產生代碼隱患。所以只有在一定技術進階的基礎下才可以使用這招。

4.匯編嵌入

高效C語言編程的必殺技,第四招--嵌入匯編。"在熟悉匯編語言的人眼里,C語言編寫的程序都是垃圾"。這種說法雖然偏激了一些,但是卻有它的道理。匯編語言是效率最高的計算機語言,但是,不可能靠著它來寫一個操作系統吧?所以,為了獲得程序的高效率,我們只好采用變通的方法--嵌入匯編,混合編程。

建議不輕易使用此種方法,因為使用了嵌入匯編,便限制了程序的可移植性,使程序在不同平臺移植的過程中,存在安全隱患!同時此種方法也與現代軟件工程的思想相違背,只有在迫不得已的情況下才可以采用。

參考文獻:

[1].《C語言趣味程序百例精解》,陳朔鷹 陳英主編,北京理工大學出版社,1996年。

[2].《Turbo C 2.0實用大全》,常玉龍等編寫,北京航空航天大學出版社,1994年9月。

主站蜘蛛池模板: 清远市| 贵港市| 寻乌县| 肥东县| 信阳市| 阜宁县| 安阳市| 松江区| 佛教| 都安| 喀什市| 咸阳市| 靖宇县| 泽州县| 西丰县| 离岛区| 伊吾县| 墨竹工卡县| 抚顺县| 区。| 根河市| 昌黎县| 岐山县| 乐清市| 出国| 清远市| 乌拉特中旗| 公主岭市| 隆德县| 西峡县| 和政县| 横峰县| 卢龙县| 修水县| 灵台县| 康平县| 鄢陵县| 错那县| 兰溪市| 南召县| 梁河县|