摘 要:將匯編語(yǔ)言與C語(yǔ)言、數(shù)據(jù)結(jié)構(gòu)等課程之間的知識(shí)點(diǎn)進(jìn)行對(duì)比教學(xué),可以幫助學(xué)生更好地掌握匯編語(yǔ)言,提高學(xué)生學(xué)習(xí)匯編語(yǔ)言的信心。文章給出了一些具體的教學(xué)實(shí)例,包括邏輯運(yùn)算指令、堆棧指令、數(shù)組訪問(wèn)和程序結(jié)構(gòu)教學(xué)等。教學(xué)實(shí)踐驗(yàn)證了教學(xué)方法的有效性。
關(guān)鍵詞:匯編語(yǔ)言;對(duì)比教學(xué);C語(yǔ)言;數(shù)據(jù)結(jié)構(gòu)
1 研究背景
眾所周知,匯編語(yǔ)言是從機(jī)器的角度出發(fā)的,與貼近人們思維的高級(jí)語(yǔ)言相差較大,學(xué)生剛接觸時(shí)一般都覺(jué)得比較難。即使專(zhuān)門(mén)開(kāi)設(shè)匯編語(yǔ)言課程,要學(xué)生較好地掌握也非易事。而電氣信息類(lèi)專(zhuān)業(yè),如自動(dòng)化、信息工程等專(zhuān)業(yè)都將微機(jī)原理作為專(zhuān)業(yè)課,在此之前一般不專(zhuān)門(mén)開(kāi)設(shè)匯編語(yǔ)言課程,作為微機(jī)原理課程的一部分,匯編語(yǔ)言只占十幾個(gè)課時(shí),無(wú)論是老師講授還是學(xué)生學(xué)習(xí)都更有難度。但是這部分內(nèi)容作為基礎(chǔ),是學(xué)生較早接觸的。根據(jù)經(jīng)驗(yàn),如果匯編部分掌握得不好,學(xué)生有可能會(huì)對(duì)整個(gè)課程的學(xué)習(xí)失去信心。因此在教學(xué)過(guò)程中,應(yīng)該盡可能采取一些方法幫助學(xué)生盡快適應(yīng)匯編語(yǔ)言的思維方式和編程風(fēng)格。
筆者所在的學(xué)校,C語(yǔ)言是所有工科專(zhuān)業(yè)的公共課,學(xué)生一般都比較重視;自動(dòng)化等專(zhuān)業(yè)還開(kāi)設(shè)了計(jì)算機(jī)軟件技術(shù)基礎(chǔ)這門(mén)課,內(nèi)容涉及數(shù)據(jù)結(jié)構(gòu)、操作系統(tǒng)等。在匯編語(yǔ)言的教學(xué)中,我們嘗試與這兩門(mén)課程的一些知識(shí)點(diǎn)進(jìn)行關(guān)聯(lián)和比較,對(duì)比教學(xué)方法做了一些探討。
2 對(duì)比教學(xué)探討
2.1 邏輯運(yùn)算
C語(yǔ)言中有邏輯運(yùn)算符和位運(yùn)算符之分,與匯編
語(yǔ)言邏輯運(yùn)算對(duì)應(yīng)的是C語(yǔ)言的位運(yùn)算符,對(duì)應(yīng)關(guān)系如表1所示。
而C語(yǔ)言中的邏輯運(yùn)算符為:與(&&),或(||),非(!),用于對(duì)包含關(guān)系運(yùn)算符的表達(dá)式進(jìn)行合并或取非。對(duì)于使用邏輯運(yùn)算符的表達(dá)式,返回0表示“假”,返回1表示“真”。在教學(xué)過(guò)程中需要提醒學(xué)生注意它們的區(qū)別和對(duì)應(yīng)關(guān)系。
2.2 棧運(yùn)算
在講入棧、出棧指令時(shí),學(xué)生已經(jīng)在計(jì)算機(jī)軟件技術(shù)基礎(chǔ)或數(shù)據(jù)結(jié)構(gòu)課程中學(xué)習(xí)了棧這種結(jié)構(gòu),對(duì)于棧的“先進(jìn)后出”的特點(diǎn)應(yīng)該已經(jīng)掌握了。但是兩門(mén)課程在細(xì)節(jié)上還是有區(qū)別的,見(jiàn)表2。匯編語(yǔ)言中討論的棧屬于運(yùn)行時(shí)棧(runtime stack),是由CPU內(nèi)部硬件直接支持的,在系統(tǒng)層上處理子過(guò)程調(diào)用[1];而數(shù)據(jù)結(jié)構(gòu)中的棧抽象數(shù)據(jù)類(lèi)型通常用于實(shí)現(xiàn)依賴(lài)于后進(jìn)先出操作的算法,一般用高級(jí)語(yǔ)言編寫(xiě)。數(shù)據(jù)結(jié)構(gòu)教材上的棧一般習(xí)慣于從低地址往高地址生長(zhǎng),但是并不是非要這樣,也可以自己實(shí)現(xiàn)符合8086匯編語(yǔ)言中的從高地址往低地址生長(zhǎng)的棧結(jié)構(gòu)。
作者簡(jiǎn)介:陳逸菲,女,講師,研究方向?yàn)槟:畔⑻幚怼r(shí)空數(shù)據(jù)庫(kù);趙麗玲,女,講師,研究方向?yàn)閳D像處理與模式識(shí)別;張英超,教授,博導(dǎo),研究方向?yàn)閺?fù)雜系統(tǒng)建模與仿真、網(wǎng)絡(luò)控制技術(shù),主持建設(shè)的微機(jī)原理課程于2010被評(píng)為“江蘇省精品課程”;葉小嶺,教授,研究方向?yàn)閮?yōu)化方法與最優(yōu)控制、智能儀器儀表。
2.3 數(shù)組元素的訪問(wèn)
匯編語(yǔ)言程序中經(jīng)常需要對(duì)一個(gè)連續(xù)的數(shù)據(jù)塊進(jìn)行操作,例如,求以array為首址的連續(xù)30個(gè)數(shù)的和。這與C語(yǔ)言中對(duì)長(zhǎng)度為30的數(shù)組求和是類(lèi)似的。利用數(shù)據(jù)偽指令可以實(shí)現(xiàn)C語(yǔ)言中數(shù)組定義的類(lèi)似功能。C語(yǔ)言中數(shù)組名arrary對(duì)應(yīng)著數(shù)組首地址,在匯編中用類(lèi)似“MOV