張浩宇 惠麗 吳玲
摘 要:“計算機組成原理”與“匯編語言”是計算機科學(xué)與技術(shù)和軟件工程專業(yè)的專業(yè)課程,將這兩門課程合并成一門全新的“計算機組成原理”課程是教學(xué)改革的新探索。文章從教學(xué)與實驗兩個角度探討了將“計算機組成原理”與“匯編語言”兩門課程融合的策略。
關(guān)鍵詞:計算機組成原理;匯編語言;教學(xué)改革
中圖分類號:G642.3 文獻標識碼:A 文章編號:1002-4107(2016)07-0014-02
一、“計算機組成原理”課程的特點
“計算機組成原理”是研究生入學(xué)考試的必考科目。該課程以馮·諾依曼型計算機為基礎(chǔ),圍繞計算機的運算器、控制器、存儲器和輸入輸出設(shè)備等五大部件詳細介紹它們的工作原理與算法以及具體實現(xiàn)的電路結(jié)構(gòu)。通過學(xué)習(xí)本課程,要求學(xué)生熟練掌握單總線結(jié)構(gòu)CPU的工作原理和設(shè)計實現(xiàn)的方法,同時要求學(xué)生初步掌握精簡指令系統(tǒng)、流水線結(jié)構(gòu)、多體并行存儲器、中斷的工作原理等知識,為后續(xù)課程“微機原理與接口技術(shù)”、“計算機系統(tǒng)結(jié)構(gòu)”做好準備。該課程首先講授了8086CPU的編程結(jié)構(gòu),然后引申出8086匯編語言的尋址方式和指令系統(tǒng),學(xué)生在掌握上述知識的基礎(chǔ)上,進行匯編語言程序設(shè)計。匯編語言程序設(shè)計可以讓學(xué)生加深對程序設(shè)計方法的理解,同時程序的編寫和調(diào)試使學(xué)生對計算機硬件有一個感性的認識, 為以后他們學(xué)習(xí)“微機原理與接口技術(shù)”、“操作系統(tǒng)”等課程做準備。
根據(jù)國家教育部高教教執(zhí)委發(fā)布的新的教學(xué)改革精神,結(jié)合我院的具體情況,我院將“計算機組成原理”與“匯編語言”兩門課程合并成一門全新的“計算機組成原理”課程。在新的教學(xué)體系中,我們將兩門課程有效地結(jié)合起來去糟取精刪繁就簡,舍去了兩門課程中的重疊部分而突出重點,形成了一套新的教學(xué)體系。
二、“計算機組成原理”與“匯編語言”教學(xué)內(nèi)
容的融合
在傳統(tǒng)的“計算機組成原理”課程中,教師始終圍繞著計算機的五大部件按照運算器、存儲器、控制器、輸入輸出系統(tǒng)這個順序進行講解,在講授過程中經(jīng)常會用到一些實例進行說明,而很多時候是以匯編語言做例子講解的,兩門課程融合在一起的最大好處就是教師在講授“匯編語言”的部分時,可以更好地兼顧“計算機組成原理”,讓這兩門課程做到無縫對接。
在基礎(chǔ)知識部分,我們首先要介紹馮·諾依曼型計算機的特點。馮·諾依曼型計算機是串行計算機的始祖,所有的串行計算機都要符合馮·諾依曼型計算機的特點,這是“計算機組成原理”基礎(chǔ)知識部分的重點。在課程講授過程中,教師都會畫一幅五大部件的關(guān)系圖,通過圖形示意來表示一條指令是如何在五大部件之間流動的,從而使用戶從外部觀察到計算機處于運行狀態(tài)。我們考慮從這里引入8086CPU的編程結(jié)構(gòu),從計算機組成原理過渡到匯編語言,讓指令舉例更加具體化,再結(jié)合指令的尋址方式,借機說明8086的匯編語言指令是如何在CPU中執(zhí)行的。
在接下來的講授過程中,我們將介紹8086匯編語言的尋址方式和指令系統(tǒng)。由于在計算機組成原理課程中也有一章介紹指令系統(tǒng),我們可以把這個部分與匯編語言的內(nèi)容合并,以計算機組成原理的部分強調(diào)基本概念,以匯編語言的內(nèi)容來強調(diào)具體應(yīng)用,把內(nèi)容更加具體化,舉例更具有針對性,可以使學(xué)生更好地理解尋址方式和指令系統(tǒng)。在這里我們在教學(xué)上做了一點改變,我們考慮到匯編語言指令數(shù)目較多的特點將指令分類,每類指令選出一到兩個具有代表性的指令進行詳細說明,其他略講,然后采用寫出指令執(zhí)行結(jié)果的方式進行大量練習(xí),從而鞏固這部分知識。
在講授了匯編語言的程序設(shè)計方法之后,再講授計算機組成原理部分的運算器與運算方法部分。在這部分我們可以利用學(xué)過的匯編語言知識,結(jié)合布斯算法和加減交替法編寫定點數(shù)乘除法的匯編語言程序,還可以編寫浮點數(shù)運算的模擬程序。在講授控制器的部分時,我們可以設(shè)計一個類8086的CPU,把它作為課堂上的CPU設(shè)計舉例,這樣把一條8086匯編語言指令放在這個CPU中運行,可以更直觀地反映指令的工作細節(jié),促進學(xué)生對控制器的工作原理和匯編語言的理解。
三、“計算機組成原理”與“匯編語言”實驗內(nèi)
容的融合
“計算機組成原理”與“匯編語言”都有實驗課,由于在講授上先講“匯編語言”的內(nèi)容,因此相關(guān)實驗先進行,然后進行“計算機組成原理”的實驗。我院的“計算機組成原理”實驗課程使用的是由清華大學(xué)計算機學(xué)院研制開發(fā)的TH-union+教學(xué)實驗系統(tǒng),該系統(tǒng)主要用于“計算機組成原理”課程的硬件教學(xué)實驗,還支持監(jiān)控程序、匯編語言程序設(shè)計。在硬件上同時實現(xiàn)了硬布線方式和微程序方式兩種控制器結(jié)構(gòu),既支持用中小集成度的芯片實現(xiàn)CPU的方案,又支持用高集成度的FPGA門陣列實現(xiàn)CPU的方案。在軟件上可實現(xiàn)指令級模擬,也可以軟件模擬硬布線和微程序的操作,為學(xué)生學(xué)習(xí)硬件理論知識起到了重要的輔助作用。但是該實驗系統(tǒng)的匯編語言指令與8086匯編語言是不兼容的,這使學(xué)生在短期內(nèi)很難快速掌握實驗系統(tǒng)的匯編語言指令,因此經(jīng)課程組全體教師研究決定,另外開發(fā)一款新的匯編語言轉(zhuǎn)換軟件,用來實現(xiàn)兩種不同種類的匯編語言互相轉(zhuǎn)換。
該軟件是利用linux模擬環(huán)境Cygwin開發(fā)實現(xiàn)的。Cygwin是cygnus solutions公司開發(fā)的一個在windows平臺上運行的類UNIX模擬環(huán)境。在這里我們主要使用了Cygwin開發(fā)環(huán)境里的flex和gcc兩個工具軟件。利用flex工具軟件編寫的源代碼必須轉(zhuǎn)換成c語言代碼格式,然后由linux下的c語言編譯器gcc編譯成可執(zhí)行文件,完成最后的開發(fā)。
由于TH-union+教學(xué)實驗系統(tǒng)的匯編語言指令共48條,采用精簡指令系統(tǒng),每條指令的尋址方式是固定的,因此不單獨設(shè)置關(guān)于尋址方式的標志位,當指令進行譯碼操作的時候,實驗系統(tǒng)電路通過分析指令的操作碼既了解了指令的操作功能也了解了指令操作數(shù)的尋址方式。而8086匯編語言指令是一個復(fù)雜的指令系統(tǒng),每條指令對應(yīng)著多種不同的尋址方式,因此我們把教學(xué)實驗系統(tǒng)的匯編語言看成是8086匯編指令系統(tǒng)的子集。通過對轉(zhuǎn)換程序my的使用,幫助學(xué)生對比兩種匯編語言之間的相同點和不同點,通過對比學(xué)習(xí),學(xué)生可以更快速地熟悉實驗系統(tǒng)匯編語言。
在這里對于不可轉(zhuǎn)換的匯編語言指令可采取兩種處理方式:方式一,發(fā)出警告提示并忽略此條指令;方式二,發(fā)出錯誤提示并強行結(jié)束程序轉(zhuǎn)換。轉(zhuǎn)換程序your分析了操作碼之后開始分析操作數(shù)的尋址方式。在這里,我們假設(shè)所有指令都采用雙操作數(shù),因此在結(jié)構(gòu)體中設(shè)置了兩個對應(yīng)尋址方式的變量。具體操作時,如果分析出該操作數(shù)的尋址方式可以被實驗平臺支持,那么就將對應(yīng)數(shù)值保存在結(jié)構(gòu)體的對應(yīng)變量中以便轉(zhuǎn)換,如果不是實驗平臺支持的尋址方式,系統(tǒng)將提示用戶:“你的程序中使用了不可轉(zhuǎn)換的尋址方式”,并強行結(jié)束轉(zhuǎn)換。在尋址方式轉(zhuǎn)換過程中,有一些特殊情況需要系統(tǒng)自動追加指令。
最后,要對輸入輸出指令單獨處理。輸入輸出操作是后續(xù)課程“微機原理與接口技術(shù)”的重要知識點。在編寫匯編語言程序過程中,當遇到輸入和輸出操作都是直接調(diào)用DOS中斷或BIOS中斷來實現(xiàn)的。但是教學(xué)實驗系統(tǒng)沒有任何中斷程序輔助操作,遇到輸入和輸出操作只能由學(xué)生自己編寫。在編寫8086匯編語言程序過程中,凡是遇到輸入和輸出操作都通過調(diào)用這兩個宏來實現(xiàn)。每次進行輸入輸出操作時必須先對指定的狀態(tài)寄存器的標志位進行判斷,以確定硬件是否準備好,是否可以進行輸入輸出操作。具體做法是使標號由英文字母和數(shù)字構(gòu)成,每次產(chǎn)生新的標號,后面的數(shù)字部分就加1,保證新標號與舊標號不同。
“計算機組成原理”和“匯編語言”是計算機科學(xué)與技術(shù)、軟件工程專業(yè)的專業(yè)課程,這兩門課程存在著很多聯(lián)系同時也有一些區(qū)別,把這兩門課程合并成一門全新的“計算機組成原理”課是我院一項新的教學(xué)改革方案。如何把兩門課程很好地融合在一起就成了課程組面臨的一個新的挑戰(zhàn),本文結(jié)合課程組全體教師的多年教學(xué)經(jīng)驗,拋磚引玉,初步提出了一些在教學(xué)和實驗上的改革方案,希望各界同人多提寶貴意見。
參考文獻:
[1]唐朔飛.計算機組成原理:第二版[M].北京:高等教育
出版社,2008.
[2]王誠,劉衛(wèi)東,宋佳興.計算機組成與設(shè)計:第三版
[M].北京:清華大學(xué)出版社,2008.
[3]沈美明,溫冬嬋.IBM PC匯編語言程序設(shè)計:第二版
[M].北京:清華大學(xué)出版社,2001.
[4][美]萊弗恩等;楊作梅,張旭東等譯.lex與yacc:第二
版[M].北京:機械工業(yè)出版社,2003.