書(shū)本上的知識(shí)是有限的,課后的學(xué)習(xí)是無(wú)止境的。想要把匯編學(xué)的很好,還是要先看小編的這篇心得體會(huì)。
在接觸這門(mén)課程初始,就感到匯編語(yǔ)言并不是很容易就可以弄懂的。相比較以前學(xué)過(guò)的程序語(yǔ)言如C、C++等,電腦等于在遷就人的思維方式,但匯編卻是接近機(jī)器語(yǔ)言的一門(mén)語(yǔ)言,我們學(xué)習(xí)和編寫(xiě)程序時(shí)必須要去遷就電腦的思維方式,要設(shè)身處地地用電腦的角度去思考問(wèn)題,這就是我學(xué)習(xí)匯編語(yǔ)言時(shí)感受最深的地方,想起來(lái)很簡(jiǎn)單,寫(xiě)起來(lái)相當(dāng)?shù)牟灰。匯編的學(xué)習(xí)不僅僅是學(xué)習(xí)其語(yǔ)法,而更多的是學(xué)習(xí)計(jì)算機(jī)基本的體系結(jié)構(gòu)。其中遇到很多新的概念,名字。如寄存器、中斷、尋址方式等。這些概念在剛接觸匯編這門(mén)課的時(shí)候難以理解,但在之后的學(xué)習(xí)中通過(guò)老師的講解,自己親手編程的方式也就漸漸清晰明了。我們?cè)趯W(xué)習(xí)之前都需要明確什么是匯編語(yǔ)言。計(jì)算機(jī)能夠直接識(shí)別的數(shù)據(jù)是由二進(jìn)制數(shù)0和1組成的代碼。機(jī)器指令就是用二進(jìn)制代碼組成的指令,一條機(jī)器指令控制計(jì)算機(jī)完成一個(gè)基本操作。
為了克服機(jī)器語(yǔ)言的缺點(diǎn),人們采用助記符表示機(jī)器指令的操作碼,用變量代替操作數(shù)的存放地址等,這樣就形成了匯編語(yǔ)言。經(jīng)過(guò)一個(gè)學(xué)期的學(xué)習(xí),我也慢慢摸出了匯編學(xué)習(xí)的規(guī)律。首先,學(xué)習(xí)這門(mén)語(yǔ)言時(shí)如果能聯(lián)系上以前學(xué)過(guò)的其他高級(jí)語(yǔ)言的知識(shí),最重要的是一些思考問(wèn)題,實(shí)現(xiàn)功能的邏輯的思考,會(huì)幫助我們很快的找到編寫(xiě)程序的思路和方向。例如C語(yǔ)言程序的運(yùn)行邏輯結(jié)構(gòu)有順序(按語(yǔ)句依次執(zhí)行)、分支結(jié)構(gòu)(IF...THEN...ELSE...),循環(huán)結(jié)構(gòu)(FOR...NEXT)三種結(jié)構(gòu),也通過(guò)C語(yǔ)言了解并掌握了什么是子程序,什么是調(diào)用。事實(shí)上,匯編語(yǔ)言中有關(guān)程序結(jié)構(gòu),子程序等等的知識(shí)都是跟C語(yǔ)言十分相似的,只是在編程時(shí)用到的語(yǔ)言不同:匯編語(yǔ)言完全面向機(jī)器,需要指明數(shù)據(jù)在寄存器、內(nèi)存中的流向。第二,學(xué)習(xí)匯編語(yǔ)言,首要問(wèn)題是學(xué)習(xí)80X86指令系統(tǒng)。如果能將指令系統(tǒng)中的各個(gè)助記符、格式等都能完全掌握并靈活運(yùn)用,大部分工作就已經(jīng)完成了。指令系統(tǒng)確定了CPU所能完成的功能,是用匯編語(yǔ)言進(jìn)行程序設(shè)計(jì)的最基本部分。如果不熟悉匯編指令的功能及其有關(guān)規(guī)定,那肯定不能靈活使用匯編語(yǔ)言。指令的種類十分繁雜,但其格式卻是統(tǒng)一的。其中方括號(hào)中的內(nèi)容為可選項(xiàng)。指令助記符決定了指令的功能,對(duì)應(yīng)一條二進(jìn)制編碼的機(jī)器指令。指令的操作數(shù)個(gè)數(shù)由該指令確定,可以沒(méi)有操作數(shù),也可以有一個(gè)或多個(gè)操作數(shù),大多數(shù)指令要顯示寫(xiě)出來(lái),還有些操作數(shù)是隱含的。
當(dāng)指令包含操作數(shù)的時(shí)候,書(shū)寫(xiě)時(shí)必須遵守:1、指令助記符和操作數(shù)之間有分隔符,比如幾個(gè)空格;2、如果含有多個(gè)操作數(shù),操作數(shù)之間用逗號(hào)分隔,F(xiàn)在簡(jiǎn)單總結(jié)匯編語(yǔ)言指令的分類:1、數(shù)據(jù)傳送指令;2、標(biāo)志位操作指令;3、算術(shù)運(yùn)算指令;4、邏輯運(yùn)算指令;5、移位運(yùn)算指令;6、位操作指令;7比較運(yùn)算指令;8、循環(huán)指令;9、轉(zhuǎn)移指令;10、條件設(shè)置字節(jié)指令;11、字符串操作指令;12、BCD碼運(yùn)算調(diào)整指令;13、處理器指令。在編寫(xiě)匯編程序時(shí),應(yīng)該注意特別容易出現(xiàn)的錯(cuò)誤,例如在編寫(xiě)數(shù)據(jù)傳送指令時(shí),目的操作數(shù)和源操作數(shù)的類型一定要匹配,CS不能作為目的操作數(shù),offset后只能跟簡(jiǎn)單地址符號(hào),等等。匯編語(yǔ)言的尋址方式有直接尋址,寄存器尋址,基址變址尋址,相對(duì)基址變址尋址等等,掌握這些都是編寫(xiě)匯編程序很重要的環(huán)節(jié)。匯編語(yǔ)言中的程序結(jié)構(gòu),子程序等知識(shí)也會(huì)幫助我們編寫(xiě)出一個(gè)更加完善的匯編程序。另外,我們還應(yīng)該掌握DOS系統(tǒng)功能調(diào)用,宏匯編等知識(shí)。這里要對(duì)子程序和宏匯編加以區(qū)分,我的理解是:子程序是調(diào)用,而宏是替換,比如一個(gè)MAX宏,所有出現(xiàn)MAX的地方,都用宏代碼代替。在學(xué)習(xí)匯編語(yǔ)言時(shí),指令的功能是學(xué)習(xí)和掌握的重點(diǎn),要準(zhǔn)確有效并合理的使用這些指令,必須了解一些使用的規(guī)則。現(xiàn)對(duì)匯編語(yǔ)言編程時(shí)的規(guī)則進(jìn)行總結(jié),歸納起來(lái)有三點(diǎn):1、要求指令操作數(shù)的尋址方式;2、指令對(duì)標(biāo)志位的影響和標(biāo)志位對(duì)指令的影響;3、指令的執(zhí)行時(shí)間,對(duì)可完成同樣功能的指令,要選用執(zhí)行時(shí)間短的指令。還有一點(diǎn)十分重要。和所有的程序設(shè)計(jì)語(yǔ)言一樣,要學(xué)好匯編語(yǔ)言,實(shí)驗(yàn)是必不可少的環(huán)節(jié)。我們深有體會(huì):書(shū)上的程序都能看懂,基本原理也都明白,但是在自己親手編寫(xiě)程序時(shí),卻無(wú)從下手,甚至連第一句該怎么寫(xiě)都不知道。通過(guò)實(shí)驗(yàn),可以在很大程度上加深印象。
在書(shū)上看程序,一切都是理所當(dāng)然,十分順利,而自己動(dòng)手,才會(huì)真正發(fā)現(xiàn)自己的不足之處。程序的編寫(xiě)在記事本中進(jìn)行即可,掌握debug的使用對(duì)實(shí)驗(yàn)是有很大幫助的,F(xiàn)在匯編課程已經(jīng)結(jié)束,感覺(jué)不如其他語(yǔ)言學(xué)的好,但再不是第一天接觸時(shí)的云里霧里了,已經(jīng)有了初步的了解和熟悉,雖說(shuō)不上得心應(yīng)手,但簡(jiǎn)單的問(wèn)題還是難不倒我的。書(shū)本上的知識(shí)是有限的,課后的學(xué)習(xí)是無(wú)止境的。想要把匯編學(xué)的很好,我想我還需要花更多的時(shí)間在課后的時(shí)間里。以上便是我在學(xué)習(xí)匯編語(yǔ)言過(guò)程中所有的心得體會(huì)和一些想法,我會(huì)更加努力的去學(xué)習(xí),達(dá)到自己滿意的結(jié)果。
一學(xué)期的學(xué)習(xí)有很大收獲,也讓我意識(shí)到自己還有很多不足,很多需要學(xué)習(xí)的地方。沒(méi)有老師指導(dǎo)的日子里,我會(huì)找準(zhǔn)自己的方向,自己再多學(xué)學(xué)。