“匯編語言與微機原理”課程教學中匯編子程序實驗設計來源:用戶上傳 作者: 趙永標 張其林 詹彬 康長青
摘 要: “匯編語言與微機原理”是計算機科學與技術專業的必修基礎課程。在教學中匯編語言子程序實驗設計普遍存在兩個問題:實驗學時安排不足;實驗內容片面。針對前者,通過合理整合實驗項目以增加子程序實驗學時;針對后者,通過調整實驗內容補充與子程序密切相關的宏和中斷加以解決。最后給出了一個實驗設計的實例。該實例簡單實用又不乏創新之處,應用效果良好。
關鍵詞: 匯編語言; 子程序; 宏; 中斷; 實驗設計
中圖分類號:G642 文獻標志碼:B 文章編號:1006-8228(2013)02-58-02
of sub- in “ and ”
Zhao , Zhang Qilin, Zhan Bin, Kang
( of and , Hubei of Art and , , Hubei , China)
: " and " is a for of and . is an of this . There are two in on sub- in and ——the time being and the being non-. The can be by some to set apart time for sub- . The for the is macro and , which is to , to . A is which is , and . Good is .
Key words: ; sub-; macro; ;
0 引言
“匯編語言與微機原理”是計算機科學與技術專業的必修基礎課程。該課程融合了匯編語言程序設計和微機原理與接口技術兩門課程的內容,要求學生重點掌握匯編語言程序設計的方法和微型計算機系統各個部件的工作原理。掌握匯編語言是掌握微機原理的基礎,因為實現和驗證微機系統各個部件的工作過程需要用到匯編語言,并且更高層次的綜合系統設計也離不開匯編語言。
匯編語言與微機原理課程中,匯編語言子程序設計這部分內容的知識掌握起到承上啟下的作用。其“承上”的作用體現在:作為一個獨立的模塊,子程序設計涵蓋之前所學的匯編語言的指令系統、偽指令、數據類型及三種基本控制結構(順序結構、分支結構和循環結構)。其“啟下”的作用體現在:①后續接口芯片的功能應用基本上都是以子程序的形式實現;②中斷系統中的中斷服務程序就是一種子程序,中斷系統是微機系統中非常重要的組成部分,可以說不理解中斷系統就不能理解計算機的工作原理[1],而掌握子程序設計是理解和應用中斷系統的基礎之一;③子程序設計是開發大型程序的基礎,對于培養編程能力十分重要[1]。因此,匯編語言子程序設計這部分內容無論在教學上還是在實驗中都必須給予足夠的重視。但目前鮮有文獻涉及這方面的問題,本文針對目前匯編語言與微機原理課程中匯編語言子程序實驗設計中普遍存在的問題給出相應的對策,并給出一個實驗設計實例。
1 實驗設計存在的問題及對策
⑴ 實驗學時安排不夠。據粗略調查,大多數院校匯編語言與微機原理課程的實驗學時為18個學時[1],有一些院校還附加一個課程設計。對于這18個實驗學時普遍的分配方式如表1所示。
表1 匯編語言與微機原理實驗項目及學時安排表
[類別\&項目\&學時\&匯編語言程序設計部分
(12學時)\&匯編語言上機過程及DEBUG的使用\&2\&DOS系統功能調用\&2\&三種基本程序結構\&6\&子程序\&2\&接口芯片部分
(6學時)\&可編程中斷控制器8259\&2\&并行接口芯片8255\&2\&可編程定時/計數器8253\&2\&]
從表1可以看出,子程序實驗僅安排了2個學時,學時太少,難以取得良好的訓練效果,可以考慮將實驗“DOS系統功能調用”融合到“三種基本程序結構”中,騰出2個學時給子程序實驗,有助于學生深刻全面的理解子程序的相關知識。
⑵ 實驗內容“片面”。對于匯編語言子程序實驗,大多數院校的實驗內容只涉及到兩方面的知識:①子程序的類型(近子程序和遠子程序);②三種參數傳遞方式(寄存器傳遞、內存單元傳遞、堆棧傳遞)[2]。這并不全面,與子程序密切相關的知識應該還包含宏和中斷服務程序,所以有必要在實驗中安排相應的內容讓學生理解子程序與宏的區別,以及如何把一個子程序“注冊”為中斷服務程序,然后通過軟中斷指令(INT n)調用該程序的過程,這樣做有助于后面對中斷系統的學習。中斷是學習匯編語言的重點、難點部分,能否真正掌握匯編語言對中斷的理解和掌握至關重要,中斷也是匯編語言的魅力所在[3]。 2 實驗設計的一個實例
針對前面提到的問題,在此給出一個匯編語言子程序實驗設計實例,主要內容如下:
⑴ 實驗學時:4學時。
⑵ 實驗目的:
① 掌握子程序的編寫及調用方法;
② 掌握近子程序和遠子程序的區別;
③ 掌握三種參數傳遞方式的差別;
④ 掌握子程序與宏的區別;
⑤ 掌握編寫中斷服務程序的方法以及通過軟中斷指令。
⑶ 實驗內容:
① 編寫一個近子程序實現將一個字節的數據以十六進制的形式輸出,采用寄存器參數傳遞方式;
② 編寫一個遠子程序,功能與①相同微機原理匯編語言程序設計實驗報告,采用堆棧參數傳遞方式;
③ 變量STR中存有一個以’$’作為結束符的字符串,編寫一個子程序實現將STR中所有的大寫字母全部改為小寫字母,采用內存單元參數傳遞方式;
④ 用宏實現①中的功能;
⑤ 編寫一中斷服務程序實現①中功能。提示:利用DOS系統功能調用的35H號功能和25H號功能提取和設置中斷向量,具體如表2所示。
表2 DOS系統功能調用的35H號和25H號功能說明[4]
[功能號\&功能\&入口參數\&出口參數\&25H\&設置中斷向量\&DS:DX=所設置中斷向量的段基址:偏移量AL=欲設置中斷向量所對應的中斷號\&無\&35H\&取中斷向量\&AL=欲取中斷向量所對應的中斷類型號\&ES:BX=取得的中斷向量的段基址:偏移量\&]
該實驗設計實例特點鮮明,首先實驗所要求完成的功能都是匯編語言中簡單而又常用的功能,這一方面可以使學生不必花太多功夫在算法實現上,而把主要精力集中在子程序本身的語法上,另一方面實驗中所完成的程序在后續的實驗中可以直接調用,減輕了學生在后續實驗中的負擔,同時加強了各實驗之間的有機聯系。我們的實驗內容涵蓋了與子程序相關的各種知識,特別是子程序與中斷服務程序的關系,這也是本實驗設計的創新之處。
3 結束語
匯編語言與微機原理課程中匯編語言子程序這部分內容占有很重要的地位。本文首先分析了其實驗設計普遍存在的問題,隨后給出了相應的對策,最后根據作者多年的教學經驗給出了一個實驗設計實例,該實例簡單實用,又不乏創新之處。該實驗設計已應用于實際教學中,取得了滿意的效果。學生對匯編語言子程序有了更全面的了解,尤其是后續學習中斷系統及8259芯片時,對中斷服務程序的概念理解掌握得更迅速。本實驗設計的不足之處是在培養學生模塊化程序設計思想方面有所欠缺,這是下一步需要思考并改進的。
參考文獻:
[1] 張學,陸慶,廖建明.匯編語言實驗教學的思考[J].計算機教育微機原理匯編語言程序設計實驗報告,2009.15:81-82
[2] 孫德文.微型計算機技術(第3版)[M].高等教育出版社,2010.
[3] 劉輝.匯編語驗教學探索[J].計算機教育,2008.4:15-16
[4] 蔡啟先,藍紅莉,陽樹洪.計算機組成與匯編語言[M].清華大學出版社,2011.