匯編語言是一種應(yīng)用于計算機專業(yè)和通信相關(guān)專業(yè)的可能。其被廣泛應(yīng)用于涉及硬件實現(xiàn)的程序設(shè)計中,雖然其不屬于高級語言,但是和高級語言一樣,都是程序設(shè)計所使用的工具,都具有非常鮮明的優(yōu)點,因此在一些基礎(chǔ)語法和基礎(chǔ)程序設(shè)計思想方面他們都具有相同的內(nèi)涵和實現(xiàn)機制。當(dāng)然,我們應(yīng)該清晰地認識到,匯編語言作為一種底層語言,其與一些高級語言之間仍然存在一定的區(qū)別。高級語言的語句功能比匯編語言的指令或偽指令集要強大許多、智能許多;在程序結(jié)構(gòu)、數(shù)據(jù)處理、實現(xiàn)流程等方面,匯編語言與高級語言之間也存在著不小的差異。
本文就數(shù)據(jù)的存儲與訪問、數(shù)據(jù)的運算以及數(shù)據(jù)流程三方面對比較教學(xué)法進行了討論。
一、在數(shù)據(jù)存儲與訪問中的對比教學(xué)
程序設(shè)計的主要目的是對數(shù)據(jù)進行處理,在數(shù)據(jù)處理前首先需要做的就是如何對數(shù)據(jù)進行有效存儲,并設(shè)定合適的訪問模式。具體而言,主要包括三個方面的內(nèi)容:數(shù)據(jù)所被安排的空間位置;數(shù)據(jù)的空間長度;數(shù)據(jù)的存儲類型和訪問類型。
如果與C語言進行對比,可以發(fā)現(xiàn),高級語言類的數(shù)據(jù)存儲類型基本是直接面向應(yīng)用的,如整型、浮點型、字符型等,其中不同的存儲類型還有細分,如長整型、短整型、單精度浮點數(shù)、雙精度浮點數(shù)、有符號數(shù)、無符號數(shù)等。利用這種面向應(yīng)用的存儲設(shè)置格式,基本實現(xiàn)了對數(shù)據(jù)空間長度和存儲類型特點的確認。在存儲空間位置中,C語言提供了四種存儲位置,即:auto、static、register、extern,分別表示內(nèi)存空間、內(nèi)存空間、寄存器空間等。Extern屬于一種全局變量聲明,其空間存儲類型較為特殊,可以另行討論。對于訪問類型而言,C語言就包含上述全局性的,或者局部周期的,甚至是根據(jù)生命周期確定的其他類型。
而匯編語言屬于一種機器語言,其基本類型如MASM中的有DB、DD、DW、DT、DQ等,這些定義只具有長度屬性,存儲空間都在內(nèi)存中。另一不同的地方在于匯編語言可以非常方便的直接調(diào)用寄存器單元,且其寄存器空間大小確定,不如C語言靈活,相當(dāng)于C語言中的寄存器變量。也就是說,匯編語言的數(shù)據(jù)更注重空間位置和數(shù)據(jù)長度,沒有更多的數(shù)據(jù)類型之分。
二、數(shù)據(jù)運算中的對比教學(xué)
本文的數(shù)據(jù)運算包括輸入輸出、運算符、堆棧運算三方面內(nèi)容。
仍舊以學(xué)生最為熟悉的C語言為例,高級語言可以直接提供面向?qū)ο蟮南嚓P(guān)的輸入輸出語句、函數(shù)和過程,供編程人員根據(jù)使用情況調(diào)用,這些函數(shù)基本涵蓋了面向應(yīng)用所需的各種類型的數(shù)據(jù)的輸入與輸出。
但是匯編語言的輸入與輸出是面向系統(tǒng)的、通過中斷調(diào)用的方式實現(xiàn)的。如在MASM中的由DOS提供的21H類的中斷服務(wù)功能等。這是一個不同的教學(xué)重點。
在進行邏輯運算時,C語言提供了直接的算數(shù)運算符和邏輯運算符等,匯編語言雖然不如C語言強大,但是也能夠提供算術(shù)運算符,知識其邏輯運算符無法直接用像型運算符表示,且其功能實現(xiàn)上,相對比較繁瑣。更為突出的一點是,在高級語言中的運算符可以處理常量和變量等各種數(shù)據(jù),但是匯編語言只能進行常量的處理,變量處理仍然需要通過相應(yīng)的指令來實現(xiàn)。
在堆棧中,高級語言的棧抽象數(shù)據(jù)類型依賴于后進先出的操作算法,出棧入棧可以不考慮數(shù)據(jù)類型。但是匯編語言的棧屬于運行時棧,由硬件直接支持,在系統(tǒng)層面進行子程序調(diào)用實現(xiàn),編程人員需要考慮數(shù)據(jù)的類型和??罩羔樀葐栴}。
三、數(shù)據(jù)流程的對比教學(xué)
在高級語言中,程序控制基本分為三種結(jié)構(gòu):順序結(jié)構(gòu)、條件判斷結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。
仍舊以C語言為例,其可以提供if、for、switch、while或do-while、case、repeat等控制語句,當(dāng)然,在高級語言中,循環(huán)和分支區(qū)分不是非常明顯,上述不同語句也可以通過具體語義實現(xiàn)不同的控制。另外,還有特殊的跳轉(zhuǎn)語句如goto等。
但是在匯編語言中,控制流程通過控制類指令具體實現(xiàn),如在MASM中的無條件轉(zhuǎn)移指令如JMP、條件轉(zhuǎn)移指令如JGE等、循環(huán)控制指令如LOOP等。除此之外,匯編語言也具有在子程序或者中斷程序中的返回或調(diào)用指令,如RET、CALL等。需要注意的是,中斷服務(wù)程序概念應(yīng)該是匯編語言所獨有的。
上述數(shù)據(jù)流程中,兩者的區(qū)別之處在于,高級語言的數(shù)據(jù)流程控制是通過子程序調(diào)用、函數(shù)名調(diào)用等方式實現(xiàn)的,而匯編語言的實現(xiàn)方式為利用專門的控制指令進行跳轉(zhuǎn)和實現(xiàn)。
四、總結(jié)
本文通過幾種較為典型的對比分析了如何幫助學(xué)生更好的理解兩種語言的差異,理清基本學(xué)習(xí)思路,在實際應(yīng)用中,還有許多其他的內(nèi)容也可以通過對比的方式進行實踐教學(xué)。通過這種教學(xué)方式,可以幫助學(xué)生領(lǐng)悟不同語言之間的區(qū)別和聯(lián)系,增強學(xué)生的應(yīng)用能力,實現(xiàn)課堂教學(xué)的有效性和高效性。