<ol id="ebnk9"></ol>
    1. 計算機專業基于系統觀的匯編語言課程教學探討

      發布時間:2025-06-16 08:57:01   來源:作文大全    點擊:   
      字號:

      計劃的專業課程里應開設嵌入式系統開發與設計課程。該課程以ARM芯片為核心,教授學生嵌入式系統中軟硬件開發的方法與技術。該課程使用18個課內學時以及20個實踐學時講授ARM指令集,基于ARM處理器的匯編語言程序設計、Bootloader、接口通訊程序等底層軟件的開發與設計技術。學生通過學習這門課程的相應環節即可較好地掌握匯編語言程序設計技術,并利用匯編語言完成一些底層軟件的開發與設計。以應用為驅動開展教學,學生的學習目的非常明確,積極性和主動性也顯著提高。另外,學生通過計算機系統基礎課程的學習,對匯編語言有了一定的了解,在進入嵌入式系統開發與設計課程中再次學習匯編語言以及匯編語言的程序設計時也感覺比較輕松,易于掌握。

      要開展基于系統能力培養的計算機專業教學,關鍵在于建立各門課程之間的關聯,在課程之間構成輸入輸出關系,見圖2。在硬件課程群中,數字邏輯課程要求學生能夠掌握加法器、ALU、控制器、存儲器等部件的搭建實現。后續的SOC原理與應用課程則在這個基礎上,讓學生掌握單周期CPU的實現,乃至多周期多級流水CPU的實現。其后的計算機組成原理、嵌入式系統等課程則擴充主存、搭建接口,從而構建一臺完整的計算機硬件平臺。操作系統、計算機網絡、編譯原理等課程則在上述硬件平臺上安裝配置操作系統,搭建網絡接口,增設網絡模塊,直至運行簡單的應用程序[8]。學生在完成了基礎課程的學習后,首先通過計算機系統基礎課程的學習初步建立起一個整體的認識,并了解計算機專業各門課程的學習目標及其關系,從而為后續學習打下扎實的基礎;然后,學生在各課程群中層層遞進,以螺旋上升的方式展開學習;最后,在嵌入式系統應用與開發課程中將前面所學的所有知識整合起來,學習設計一個完整的計算機系統。在這個課程體系中,匯編語言相關知識的講授與學習在計算機系統基礎和計算機系統基礎兩門課程中完成。計算機系統基礎課程講解匯編語言的入門和基礎,重點是建立匯編語言相關知識與其他課程之間的關聯;計算機系統基礎課程講解匯編語言的提高與深入,重點應放在系統軟件和應用程序的開發與設計上。

      3理論教學內容的改革

      在計算機系統基礎課程中開展匯編語言教學時,其教學重點不應放在程序設計方面,而應放在與其他課程的關聯上,而關聯主要通過適當的案例教學實現。

      分析圖3的C語言源程序可以看出,當參數len為0時,返回值應該是0,但是在執行時,卻發生了存儲器訪問異常。從高級語言程序設計的角度分析,由于變量len的類型被定義為unsigned(無符號數),當len=0時,表達式len-1出錯,但無法解釋為什么出現存儲器訪問異常。將該程序的目標代碼反匯編成匯編指令程序后,問題就容易解釋了。分析如圖3的匯編程序,變量i存于寄存器eax中,變量len存于edx中,初始值都為00000000H;減法subl指令實現len-1的功能,該指令執行完后edx中的值改為FFFFFFFFH;比較指令cmpl執行完成后,各條件標志位分別為CF=1, ZF=0, OF=0, SF=0;由于len的類型定義為無符號數,因此編譯器選用的條件轉移指令是jbe,jbe跳轉的條件為CF=1或ZF=1,此時條件滿足,跳轉到L3處進入循環執行。也就是說,由于len是無符號數,使數據FFFFFFFFH被當成無符號數對待,其真值為4294967295,滿足循環條件,由于其值太大,循環次數過多,使變量i的值變得過大,從而使數組a[i]的下標變量溢出,即該程序訪問到了其他程序甚至操作系統使用的內存區域,導致操作系統出于內存信息保護的需要而終止該程序的執行并給出存儲器訪問異常的提示。通過上述案例的學習,學生能夠將匯編語言與C語言關聯起來,使學生能夠通過分析匯編語言程序而對高級語言的編程有更深層次的理解和掌握。

      同理,通過將C語言源程序中定義的各類數據結構與該程序對應的匯編語言程序中的數據定義以及存儲器分配偽指令序列對照分析,學生了解了數據以及各種數據結構的機器級表示,從而將匯編語言與數據結構及算法關聯起來;通過帶領學生單步執行匯編語言程序中各條指令,觀察各指令的執行情況,學生了解計算機系統的組成結構與工作原理,從而與計算機組成原理關聯起來;通過觀察和分析程序執行過程中產生的異常以及中斷的過程等現象,學生了解操作系統對程序執行過程中的各種情況的處理手段,從而與計算機操作系統關聯起來。通過這一系列的關聯,學生切身體會到匯編語言知識的“用處”,提升了學生的學習興趣,并能真正做到為后續課程打下扎實的基礎。

      4實踐環節的改革

      以往的匯編語言實驗都是驗證性的實驗和程序設計型的實驗,目的是使學生通過驗證性實驗體會和掌握教師在理論課上講述的內容,通過程序設計型實驗提高學生的底層軟件編程能力和技巧?;谙到y能力培養的匯編語言實驗教學注重與其他相關課程的關聯。學生在完成C語言和數據結構課程的實驗程序后,要求他們保存源程序和目標程序,在學生進入匯編語言的實驗環節時,直接對上述目標代碼進行反匯編,通過分析匯編指令和觀察單步跟蹤執行的情況,回答實驗指導書提出的相關問題,從而實現匯編語言與學生已經完成的課程之間的關聯。另外,教師通過實驗指導書給學生提供一些與計算機組成原理、操作系統等課程相關的源程序,要求學生對其反匯編后再跟蹤執行,觀察其執行情況并回答問題,實現與后續課程的關聯。

      匯編語言的實驗應盡量設置成問題解析型實驗。所謂問題解析型實驗就是教師給出一些C語言源程序,并針對程序提出相應問題,要求學生通過對程序反匯編并跟蹤執行從而查出問題的答案。例如,實驗指導書給出圖4的兩段C語言的程序代碼,要求學生執行程序觀察執行結果的差異,并提示學生通過反匯編這兩個程序段,分析其對應的匯編指令序列找出問題出現的原因。學生通過執行兩個程序段可以發現圖4代碼段一的運行結果為“-2147483648”,而代碼段二的運行結果為“Floating point exception”。將2段源代碼的目標代碼反匯編后,分析其匯編指令就能發現,代碼段二中的“a/b”是用除法指令IDIV實現的;而代碼段一中的“a/-1”由于編譯器的優化,轉換為求補指令NEG實現。正是由于兩段相同功能的源代碼在目標代碼中使用了不同的機器指令,導致最終結果各不相同。

      這種問題解析型實驗可以激發學生的探索欲望,提高其學習興趣;而與其他相關課程的關聯又可以使學生做到“學以致用”。那么,學生學習匯編語言態度不端正、積極性不高等問題也就迎刃而解了。

      5結 語

      匯編語言是計算機專業知識體系中的重要組成部分,上與各類應用程序緊密相關,下與計算機硬件緊密相關,是學生深入了解和掌握計算機系統的構成和工作原理,使學生樹立“系統觀”的一個重要工具。只有針對不同的專業和方向、不同的需求,確定不同的培養目標,合理地組織教學內容,才能使學生明確學習的目的,提高其學習積極性,從而達到理想的教學效果。

      參考文獻:

      [1]教育部高等學校計算機科學與技術專業教學指導委員會.高等學校計算機科學與技術專業發展戰略研究報告及規范[M]. 北京: 清華大學出版社, 2006.

      [2]教育部高等學校計算機科學與技術專業教學指導委員會.高等學校計算機科學與技術專業人才專業能力構成與培養[M]. 北京: 機械工業出版社, 2010.

      [3]王志英, 周興社, 袁春風, 等. 計算機專業學生系統能力培養和系統課程體系設置研究[J]. 計算機教育, 2013 (9): 1-6.

      [4]袁春風, 陳睿. 從碩士研究生入學統考看高校計算機本科專業基礎課教學[J]. 中國考試, 2013(1): 50-55.

      [5]袁春風, 王帥. 大學生計算機專業教育應重視“系統觀”培養[J]. 中國大學教學, 2013 (12): 41-46.

      [6]張玲, 湯全武, 高志軍.關于“匯編語言程序設計”課程的教學設計[J]. 電化教育研究, 2001 (6): 54-57.

      [7]袁春風. 計算機系統基礎[M]. 北京: 機械工業出版社, 2014.

      [8]何健, 蘇守寶, 朱俊, 等. 基于系統觀的應用型本科計算機專業課程探討[J]. 計算機教育, 2015 (21): 7-10.

      (編輯:孫怡銘)

      国产另类无码专区|日本教师强伦姧在线观|看纯日姘一级毛片|91久久夜色精品国产按摩|337p日本欧洲亚洲大胆精

      <ol id="ebnk9"></ol>