1. 程式人生 > >關於匯編語言基礎知識的總結與思考

關於匯編語言基礎知識的總結與思考

設計 數據信息 電平 應用 小時 內存 編譯器 現在 便是

這是我第一次真正的接觸匯編,在此之前我對這門課的印象一直停留在《c++語言程序設計》的深度探究裏把一串亂碼似的東西叫做匯編語言中。當時我就想:這門語言真煩人,怎麽生的這麽亂?現在我不怪它了,因為我知道了它是為了另一種更煩人的語言而產生的——機器語言。

機器語言是機器指令的集合,電子計算機的機器指令是一列二進制數,計算機運行時分別將0、1轉變為高、低電平,從而進行運算。機器語言是唯一能被計算機直接識別的語言,它占據空間小、執行速度快、還有進行加密解密的功能。可縱然它千好萬好,它用起來煩啊,哪有人有耐性天天0101的往電腦裏輸?於是,匯編語言應運而生。由於計算機只能識別機器語言,於是一個名叫“編譯器”的東西充當起了翻譯官,程序員輸入匯編指令(匯編語言的主體與核心)後,由編譯器將其編譯為機器碼並由計算機最終執行。

匯編語言是直接在硬件上工作的編程語言,既要學習匯編,便少不了對一些計算機硬件的學習與認知。

首先要提的便是計算機最重要的組成部分——CPU。CPU控制著整個計算機的運作並進行運算。要讓一個CPU工作,就必須向它提供存放在存儲器(內存)中的指令和數據,此處值得註意的是在內存或磁盤上指令和內存都是一串毫無區別的二進制碼,只有聰明的CPU在工作時會對它們加以區分。

接著談到存儲單元。存儲器被劃分成若幹個從0開始順序編號的存儲單元。一個存儲單元的大小為一個Byte,即一個字節。以下是微機中常用的計量單位轉換:

1KB=1024B 1MB=1024KB 1GB=1024MB 1TB=1024GB .

介紹完了CPU和存儲器,接下來便談談CPU對存儲器的讀寫。CPU在進行數據的讀寫操作時必須與外部器件進行一下三類的信息交互:1、存儲單元的地址(地址信息);2、器件的選擇,讀或寫的命令(控制信息);3、讀或寫的數據(數據信息)。三類交互分別會用到地址總線、控制總線和數據總線,這三種總線的寬度標誌了這個CPU不同方面的性能:

1、 地址總線的寬度決定了CPU的尋址能力(能尋2^N個B);

2、 控制總線決定了CPU對其它器件的控制能力。邏輯上的內存地址空間的容量便受到CPU尋址能力的限制。

3、 數據總線的寬度決定了CPU進行數據傳送時的一次數據傳送量(能傳n/8個B);

這裏單獨來寫一下第二步控制信息。起初我對“器件的選擇”這一步驟很不理解,為什麽CPU在控制信息時要選擇一個存儲器芯片呢?於是我上網查閱了有關存儲器芯片的資料,網上是這麽說的——“存儲芯片,是嵌入式系統芯片的概念在存儲行業的具體應用……”半小時後,一個字都沒看懂的我回來了。終於,我在課本第10頁關於各類存儲器芯片的介紹中找到了答案。原來,不同的存儲器芯片有不同的功能,它們從讀寫屬性上看分為兩類:隨機存儲器RAM(可讀可寫)和只讀存儲器ROM(聽名字就知道功能了)。CPU按每次執行命令所需的不同的功能選擇相應的存儲器,由存儲器轉手將選定存儲單元中的數據交給數據線傳出。(課後我還就此點請教了老師,值得註意的是,讀數據時數據由存儲器通過數據線傳出,而寫入數據時數據由CPU通過數據線寫入。每個存儲器執行功能時只執行一個功能,不能同時讀寫,故而寫入時不用RAM。至於寫入數據時選存儲器芯片有什麽用,sorry啊老師我好像沒有聽懂【哭泣】。)

不知不覺寫了這麽多,不敢再羅嗦了,最後寫一下我學完這章的疑問吧:存儲單元中的數據被數據線傳回CPU後是怎麽到寄存器的呢?

關於匯編語言基礎知識的總結與思考