999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

計算機專業基于系統觀的匯編語言課程教學探討

2017-09-28 16:19:16何健蘇守寶莫曉暉
計算機教育 2017年9期

何健++蘇守寶++莫曉暉

摘 要:匯編語言是計算機專業知識架構中不可或缺的一個環節,但在實際教學過程中,匯編語言程序設計課程卻長期被認為是難學、難教、枯燥、無用的課程。針對上述問題,文章分析計算機系統能力培養的需求,調整教學培養目標,在理論和實踐教學中建立課程間關聯,提高學生學習的主動性和積極性。

關鍵詞:系統能力;匯編語言;本科計算機專業

1 背 景

教育部計算機專業教學指導分委員會對計算機專業學生的能力培養和實踐教學體系開展了研究,研究提出:①在教學中必須樹立學生的系統觀,培養學生的系統能力,使學生學會站在不同層面把握不同層次的系統,并全面考慮系統各部分及其與外界的邏輯與聯系,完成一定規模的系統設計;②計算機專業基本能力包括計算思維能力、算法設計與分析能力、程序設計與實現能力以及系統能力,其中系統能力占總能力的75%,包括系統認知、系統設計、系統開發和系統應用能力[1-3]。然而,文獻[4]通過分析近年來研究生招生考試中計算機專業綜合統考各門課程試卷難度,特別是組成原理課程試卷考試結果,得出了國內本科計算機專業教學中存在“輕應用、缺關聯、少綜合、無系統觀”等問題的結論。針對上述問題,目前國內越來越多的高校展開了相關的研究與探索。

一個計算機系統是由相關硬件和軟件采用層次化方式搭建的,從底向上分別包括器件層、門電路層、功能部件/寄存器傳送級(RTL)層、微體系結構層、操作系統/虛擬機層、程序(程序語言)層、算法層以及應用(問題)層[5],見圖1。各層知識之間是緊密相關的。圖1中“指令集體系結構(ISA)”抽象層定義了一臺計算機可以執行的所有指令的集合,但是常人難以掌握和理解機器指令,而匯編語言的指令與機器指令是一一對應的。因此,匯編語言是學生理解處理器指令集的一個主要途徑,是計算機專業知識架構中不可或缺的一環。

在匯編語言的教學過程中,學生普遍反映該課程需要死記硬背的內容太多,既抽象難懂,又枯燥難學[6]。另外,由于匯編語言指令與處理器的機器指令一一對應,因而匯編語言程序的通用性和可移植性較差。同時,匯編語言的指令只能完成比較簡單的操作,且涉及硬件細節,導致編寫程序比較繁瑣,調試起來比較困難。鑒于匯編語言的上述兩個缺點,目前,在實際應用軟件開發過程中極少使用匯編語言。那么,在本科高校計算機專業教學中如何組織、開展匯編語言的教學才能讓學生感到真正“有用”?

2 調整培養目標

匯編語言的相關知識對計算機類諸如軟件工程、網絡工程等專業和方向的學生來說,按照系統能力培養的要求,并不要求掌握匯編語言程序設計的技術與方法,只需對匯編語言有一個基本的掌握,能夠讀懂匯編語言編寫的程序即可。但是對計算機科學與技術專業,特別是嵌入式方向的學生來說,不但必須要了解匯編語言的相關指令以及尋址方式等基本知識,還應熟練掌握匯編語言程序設計的技術與方法。因此,匯編語言相關課程必須針對不同的需求做出必要的調整,具體調整方案如下。

首先,取消匯編語言程序設計課程,用針對系統能力培養的特色課程——計算機系統基礎替代。計算機系統基礎課程的內容是以高級語言程序的開發和運行為主線,將該過程中每個環節涉及的硬件和軟件的基本概念關聯起來,使學生建立一個完整的計算機系統層次結構框架,了解計算機系統的全貌和相關知識體系,初步理解計算機系統中的每一個抽象層及其相互轉換關系[7]。該課程使用14個課內理論學時講授匯編語言的相關知識,包括匯編語言基本指令、程序各類控制語句對應的機器級代碼的結構、可執行目標代碼中的指令序列在機器的執行過程、存儲訪問過程等。該課程要求學生能夠對照C語言源程序,分析目標代碼反匯編后得到的匯編語言程序,并能夠單步跟蹤調試匯編程序,從而對指令在硬件上的執行過程和指令的底層硬件執行機制有一定的認識和理解。

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

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

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 實踐環節的改革

以往的匯編語言實驗都是驗證性的實驗和程序設計型的實驗,目的是使學生通過驗證性實驗體會和掌握教師在理論課上講述的內容,通過程序設計型實驗提高學生的底層軟件編程能力和技巧。基于系統能力培養的匯編語言實驗教學注重與其他相關課程的關聯。學生在完成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.

(編輯:孫怡銘)endprint

主站蜘蛛池模板: 在线日韩日本国产亚洲| 亚洲综合极品香蕉久久网| 97久久免费视频| 国产91精品调教在线播放| 波多野结衣一区二区三区四区| 亚洲乱强伦| 日韩精品一区二区三区swag| 国产综合网站| 波多野结衣无码AV在线| 好久久免费视频高清| 波多野结衣无码中文字幕在线观看一区二区 | 久久精品中文无码资源站| 国产91丝袜| 午夜精品久久久久久久无码软件 | 成年片色大黄全免费网站久久| 在线a视频免费观看| 一区二区三区四区精品视频 | 在线色国产| 激情综合激情| 国产h视频免费观看| 天天操精品| 久久久久人妻一区精品色奶水 | www中文字幕在线观看| 免费视频在线2021入口| 无码AV动漫| 久久精品只有这里有| 欧亚日韩Av| 国产区福利小视频在线观看尤物| 国产91小视频| 久久人妻xunleige无码| 色窝窝免费一区二区三区| 在线精品自拍| av一区二区三区高清久久| 日韩第一页在线| 午夜综合网| 国产在线麻豆波多野结衣| 国产精鲁鲁网在线视频| 99re热精品视频中文字幕不卡| 亚洲v日韩v欧美在线观看| 在线无码av一区二区三区| AV片亚洲国产男人的天堂| 98超碰在线观看| 91色老久久精品偷偷蜜臀| 国产欧美日韩综合一区在线播放| 久久久久青草大香线综合精品| 亚洲国产欧美国产综合久久| 伊人久久大香线蕉影院| 97se亚洲综合不卡| 免费人成黄页在线观看国产| 一级全黄毛片| 欧洲精品视频在线观看| 四虎成人精品| 91亚洲国产视频| 免费午夜无码18禁无码影院| 91丝袜乱伦| 欧美成人免费一区在线播放| 丁香亚洲综合五月天婷婷| 一区二区三区成人| 亚洲中文无码h在线观看 | 国产靠逼视频| 夜夜爽免费视频| 国产靠逼视频| 成人免费网站久久久| 99久久国产精品无码| 国产精品自在线天天看片| 精品福利一区二区免费视频| 色播五月婷婷| 丰满人妻一区二区三区视频| 国产福利观看| 欧美综合中文字幕久久| 中文字幕在线播放不卡| 东京热一区二区三区无码视频| 欧洲精品视频在线观看| 欧美精品v欧洲精品| 日韩精品高清自在线| 国产精品永久在线| 久久www视频| 一级毛片免费的| 欧美黄网站免费观看| 久久人人爽人人爽人人片aV东京热| 久久久精品久久久久三级| 欧美成人免费一区在线播放|