1.匯編語(yǔ)言的產(chǎn)生
我們都知道,計(jì)算機(jī)能夠處理的語(yǔ)言只有機(jī)器語(yǔ)言,也就是只用0和1兩個(gè)二進(jìn)制數(shù)書寫的編程語(yǔ)言。也就是說,早期的程序員如果想要編程,就要將0,1數(shù)字編寫的程序代碼打在紙帶或者卡片上,1打孔,0不打孔,再將程序通過制袋機(jī)或者卡片機(jī)輸入計(jì)算機(jī),進(jìn)行運(yùn)算。我們可想而知,當(dāng)時(shí)的程序員是多么厲害。但是他們很快發(fā)現(xiàn)編寫的都是0,1很難辨別和記憶,因?yàn)槌绦騿T要面對(duì)的是01010100011...的數(shù)字,稍微錯(cuò)一個(gè)數(shù)字也不太好發(fā)現(xiàn),因此,就產(chǎn)生了匯編語(yǔ)言。
著便是匯編語(yǔ)言的產(chǎn)生。
2.匯編語(yǔ)言的基礎(chǔ)知識(shí)
首先,我們先了解一些基本概念:
機(jī)器語(yǔ)言
所謂機(jī)器語(yǔ)言,就是只用0和1兩個(gè)二進(jìn)制數(shù)書寫的編程語(yǔ)言。它有的時(shí)候也叫作原生代碼(Native Code)。這里需要注意,只要CPU種類不同,對(duì)機(jī)器語(yǔ)言的解釋也就不同。編譯器
由于計(jì)算機(jī)只能讀懂機(jī)器指令,所以就需要一個(gè)能夠?qū)R編指令轉(zhuǎn)換成機(jī)器指令的翻譯程序,這樣的程序我們稱其為編譯器。程序員用匯編語(yǔ)言寫出源程序,再用匯編編譯器將其翻譯為機(jī)器碼。就像我們寫的Java,OC,等等,都是由編譯器最終轉(zhuǎn)換成01代碼,最后由計(jì)算機(jī)執(zhí)行。時(shí)鐘信號(hào)的頻率
由時(shí)鐘發(fā)生器發(fā)送給CPU的電信號(hào)的頻率。單位是MHZ(兆赫茲 = 100萬(wàn)回/秒)。時(shí)鐘信號(hào)是0和1兩個(gè)數(shù)之間反復(fù)變換的電信號(hào),類似于滴答滴答左右擺動(dòng)的鐘擺一樣。通常我們把發(fā)出一次滴答的時(shí)間稱作一個(gè)時(shí)鐘周期。
簡(jiǎn)單先了解這么幾個(gè)概念,接下來讓我們正式走進(jìn)匯編語(yǔ)言。先來看看下面一段代碼:
LD A,207OUT(2),A LD A,255OUT(2),A
這樣的一段代碼,初次見到我們肯定不太理解其意思。它就是匯編語(yǔ)言。我們現(xiàn)在在簡(jiǎn)單分析一下這段代碼(不解釋功能):
類似于LD、OUT這種類英語(yǔ)或者英語(yǔ)單詞的東西,我們叫它:
助記符
它是根據(jù)指令功能的單詞起一個(gè)相似的昵稱,并將這個(gè)昵稱做一個(gè)1對(duì)1的映射,而與其對(duì)應(yīng)的就是0和1的組合。
那什么叫匯編語(yǔ)言呢?顧名思義,就是使用助記符的編程語(yǔ)言叫做“匯編語(yǔ)言“。
匯編語(yǔ)言的語(yǔ)法
匯編語(yǔ)言的語(yǔ)法很簡(jiǎn)單,相比我們學(xué)的OC、Java等語(yǔ)言,它的語(yǔ)法只有一個(gè):把標(biāo)簽、操作碼(指令)和操作數(shù)(指令的對(duì)象)并排寫在一行。
舉個(gè)簡(jiǎn)單的例子:
標(biāo)簽 操作碼 操作數(shù) LD A,207 OUT (2),A LOOP: IN A,(0) OUT (1),A JP LOOP
這便