新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 第1章 從機(jī)器碼到開(kāi)發(fā)語(yǔ)言(X86匯編教程)

第1章 從機(jī)器碼到開(kāi)發(fā)語(yǔ)言(X86匯編教程)

作者: 時(shí)間:2016-12-01 來(lái)源:網(wǎng)絡(luò) 收藏
學(xué)習(xí)東西不動(dòng)手實(shí)踐是很難記好的,所以,前幾章不用看得太懂,隨便看看即可.動(dòng)手實(shí)踐的時(shí)候偶爾翻一翻會(huì)逐漸掌握.記住:我不是說(shuō)前面的知識(shí)不重要,而是說(shuō)前面的知識(shí)很難記,不要求你看過(guò)就記住,要以后通過(guò)一次次使用來(lái)記住.

匯編語(yǔ)言可能是所有開(kāi)發(fā)語(yǔ)言中見(jiàn)效最慢的了,一般學(xué)匯編都是學(xué)習(xí)很久才

本文引用地址:http://2s4d.com/article/201612/324263.htm

會(huì)開(kāi)始教怎么開(kāi)發(fā)第一個(gè)程序,前邊一堆都是講電腦原理,因?yàn)閰R編是最底層的.所以

需要一堆電腦原理知識(shí)才能學(xué)習(xí).所以我不會(huì)在一開(kāi)始就教開(kāi)發(fā).另外學(xué)習(xí)匯編最好是

放下你以前對(duì)電腦的一些看法...
電腦是一臺(tái)計(jì)算機(jī),顯示在屏幕上的東西全都是通過(guò)數(shù)學(xué)計(jì)算得來(lái)的.
CPU(中央處理器),是電腦的計(jì)算單元,電腦的計(jì)算工作都通過(guò)CPU來(lái)完成.如

同人類的大腦,CPU直接或間接連接著電腦的所有硬件,CPU從內(nèi)存里讀取機(jī)器碼,并解

析機(jī)器碼的意思,對(duì)電腦的一切進(jìn)行支配.
那么什么是機(jī)器碼呢?那是一些2進(jìn)制指令的集合.類似于這樣:
101110000001000010001001
這就是2進(jìn)制指令,人們叫它:比特(bit)
CPU通過(guò)1秒鐘解析無(wú)數(shù)比特,對(duì)電腦進(jìn)行支配.
是不是覺(jué)得有些頭暈?這些數(shù)據(jù)有一個(gè)單位,叫做字節(jié)(byte).一個(gè)字節(jié)又8個(gè)

比特組成.當(dāng)然字節(jié)之上還有很多單位,那些咱們暫且不談.下面我們把那組數(shù)據(jù)分成

字節(jié)單位的:
10111000 00010000 10001001
這樣,看起來(lái)順眼多了是吧?但是這樣仍然還是很麻煩,一個(gè)好的程序,往往有

幾千字節(jié),這要是代碼出了錯(cuò)誤,程序員修改的時(shí)候一堆1和0把眼睛都閃瞎了,還怎么

來(lái)修改?
于是,程序員們編寫(xiě)了一個(gè)程序,世界上第一個(gè)匯編編譯器,它有什么作用呢?

它呢,能把一句英文寫(xiě)的指令轉(zhuǎn)換成幾個(gè)字節(jié)組成的機(jī)器碼.這樣:
MOV [0000],1234
也就是說(shuō),人們用英文字母代替了那一堆1和0組成的數(shù)字.那之后以行作為單

位的指令就開(kāi)始出現(xiàn)了,在這之前,指令都是一個(gè)字節(jié)一個(gè)字節(jié)排列在內(nèi)存里的,用眼

睛去看就是一堆數(shù)字,完全不知道哪個(gè)字節(jié)是一條指令的開(kāi)頭哪個(gè)又是結(jié)尾.
后來(lái)人們發(fā)現(xiàn).可以用一行代碼代替幾十行匯編代碼,能夠使開(kāi)發(fā)更加輕松.

于是程序員開(kāi)發(fā)了一個(gè)程序,能夠把一行代碼轉(zhuǎn)換成幾十行匯編代碼再轉(zhuǎn)換成機(jī)器碼.
于是出現(xiàn)了高級(jí)語(yǔ)言.與匯編相比,高級(jí)語(yǔ)言執(zhí)行效率會(huì)低一點(diǎn),同樣功能的代碼執(zhí)行

起來(lái)比匯編慢了一大截,但是開(kāi)發(fā)起來(lái)更加輕松了.同樣的事情在匯編中需要幾十行代

碼才能完成,用高級(jí)語(yǔ)言則幾行代碼搞定(雖然執(zhí)行起來(lái)速度比匯編的代碼慢).
不管什么開(kāi)發(fā)語(yǔ)言,想要讓電腦能夠識(shí)別就必須要轉(zhuǎn)換成2進(jìn)制的機(jī)器碼字節(jié)

.高級(jí)語(yǔ)言一行代碼能做很多次沒(méi)錯(cuò),但是轉(zhuǎn)換成機(jī)器碼以后,一行高級(jí)語(yǔ)言轉(zhuǎn)出來(lái)的

機(jī)器碼都是幾十上百字節(jié)的.而匯編語(yǔ)言轉(zhuǎn)出來(lái)的機(jī)器碼往往只有幾個(gè)字節(jié)而已.所以

高級(jí)語(yǔ)言與匯編,一個(gè)是在開(kāi)發(fā)的時(shí)候快,適合編寫(xiě)一些不需要高速計(jì)算的程序,一個(gè)

是在用的時(shí)候快,適合編寫(xiě)一些常用的東西,比如一個(gè)程序,一秒鐘會(huì)被調(diào)用幾萬(wàn)次,那

這個(gè)程序最好是匯編寫(xiě)的,不然會(huì)很卡.



評(píng)論


技術(shù)專區(qū)

關(guān)閉