回覆列表
  • 1 # J小勁

    組合語言是最接近硬體的語言,與二進位制機器語言一一對應。

    組合語言屬於最底層的需要,主要用於計算機.微處理器,微控制器或者其他可程式設計器件的低階需要,也可以稱之為符號語言。

    組合語言沒有像其他程式語言一樣用於編碼,程式設計,也沒有被廣泛用於程式應用開發中,在今天的實際應用中,它通常被應用於底層,硬體操作和高要求的程式最佳化的場合。驅動程式,嵌入式作業系統和實時執行程式都需要組合語言。

    整體來說,組合語言能面向機器並且較好的發揮機器的特性,得到質量較高的程式,佔用記憶體少,執行速度快,是高效的程式設計語言。

    希望樓主採納

  • 2 # 國際科技資訊

    首先,組合語言肯定是屬於底層架構的!

    組合語言就是將一些難於記憶的0100100轉換為便於記憶的格式,讓人能夠稍微理解點。如 將暫存器bx的內容送到ax中,對應的機器指令是: 100001001110110000(完全不知道是啥玩意,如果真要細究,那麼你就得去檢視其電路連線了),而變成彙編指令後: mov ax, bx 。哈哈,是不是容易理解多了。所以,我也總結出一個道理,其實所謂的困難與簡單,真的只是相對的,沒有對比就沒有傷害!

      回到前面的問題,組合語言能幹什麼? 這個問題有點low了,機器語言都能幹成的事,彙編都能幹?但是,機器語言這麼牛逼嗎?難道現在這麼多高科技的東西機器語言都能幹嗎?這是廢話,所有語言轉到最後,都是機器語言,沒有機器語言幹不了的事,也可以說,沒有彙編幹不了的事,只是咱功力不夠,哈哈!

      彙編主要有三類指令:1)彙編指令(機器碼助記符,與機器指令一一對應,如果可以,其實只要這玩意你就可以操作計算機所有硬體了); 2)偽指令(沒有對應機器碼,由編譯器執行,計算機不執行,也就是說被編譯器轉換成了一組或更多的機器碼去了,現代高階語言編譯器都是幹這事兒的); 3) 其他符號(如+-*/,和第二個一樣,由編譯器識別轉換)

    越是技巧性性的東西,我覺得現代的語言已經夠多了,咱也沒必要在彙編上去花費太多功夫。

      瞭解彙編,不是想用來寫什麼牛逼的功能,而是讓自己更清楚的明白自己在做的是什麼事情。

      我覺得有必要好好了解!

  • 3 # Fortitude

    簡介

    組合語言(assembly language)是一種用於電子計算機、微處理器、微控制器或其它可程式設計器件的低階語言,亦稱為符號語言。屬於第二代計算機語言,它是採用一些容易理解和記憶的字母、單詞來代替一個特定的機器指令,如:“ADD”代表數字邏輯上的加減。這樣一來,透過將字母、單詞與機器語言指令進行一一對應,便可提高一定的程式可讀性,有助於bug修復等開發操作。

    應用場景

    組合語言只是將機器語言做了簡單編譯,但是並沒有改變機器語言本身對不同硬體環境的特定性。因此,組合語言的推廣和移植很難,但也正是其未改變機器語言的特定性,使得它能夠完美適配特定型號的計算機,故而執行效率遠遠高過其它語言。又由於其與機器語言相比,提高了可閱讀性和簡便性,故其通常被應用在底層架構、硬體操作和高要求的程式最佳化場景中。

    優勢

    可輕鬆讀取儲存器以及硬體I/O介面狀態

    保持了機器語言優秀的執行效率

    可擴充套件性高等

    總結

    組合語言是一種比較貼近機器語言的符號語言,因而具有很高的執行效率,但與機器語言相比,又避免了其閱讀性差和bug修復過程困難等缺陷,因此,成為了常用的程式語言之一。

    此外,對於計算機技術的學習者而言,組合語言成為了很好的出發點,這是由組合語言本身的特性所決定的:其充分接觸硬體,可以讓操作者充分感知計算機的執行過程和原理,從而能夠對計算機硬體和應用程式之間的聯絡和互動形成一個清晰的認識,這也是最能夠鍛鍊程式設計者程式設計思維邏輯的。

  • 4 # 點滴構造思維

    1、首先負責的說,彙編屬於底層架構。計算機只能識別0和1兩個數字,那我啥我們平時程式設計都是直接英文字元呢?這中間就是一個轉換的問題,那是不是直接將高階語言轉換成可執行的二進位制(也就是0和1)呢?其實也不是,現在編譯器大多數都是將高階語言轉成中間的組合語言。那為啥必須裝成組合語言呢?因為計算機硬體不同,可行性的命令集是不一樣的,比如intel與amd,組合語言就是操作這些cpu的符號語言。所以高階語言需要轉換成依賴於硬體的組合語言。

    2、有什麼用呢?

    (1)最佳化,因為我們直接使用高階語言,在某些情況下,不能直接發現效能問題,使用匯編可以很好的分析程式真正的執行流程,進而看到問題所在。

    (2)破解,發行的軟體都是編譯好的二進位制可執行檔案,無法得到原始碼,但二進位制指令與彙編符號是一一對應的,我們可以透過逆向工程,反彙編得到軟體的彙編程式碼,進而觀察註冊行為,破解軟體。

    (3)核心啟動,在電腦開啟之時,作業系統軟體還未載入,這時只能使用機器識別的語言進行控制執行。

  • 5 # BWanger軟體開發達人

    標題不是很正確。最底層的架構,的確是由彙編寫的。但是,組合語言不全是底層架構。

    作業系統的引導載入部分,輸入輸出,磁碟操作等部分是由彙編寫的。系統啟動時自檢的BIOS程式也是彙編寫的。除了底層的作業系統部分由彙編寫成,其它部分不一定,由C,vc++寫的也很多。

    組合語言除了底層作業系統外,做控制,計算等,也經常用匯編寫。比如現在很多裝置上用的控制軟體,可能就是C語言,plm語言及宏組合語言的混合程式設計。它與c語言本身差異不大,只是寫法上不一樣。有的老的軟體工程師,最先用匯編/宏彙編,後來又用c編寫,所以,為了保持程式正確性,採用混合程式設計。只是在彙編部分增加:

    程式名()

    {

    _asm

    mov mem1,#67h

    ...

    }

    這樣是沒問題的.

    宏彙編在處理協處理數學處理器的運算時,效率也極高。有興趣可以看看有關資科。

  • 中秋節和大豐收的關聯?
  • 黃帝大戰蚩尤的神話傳說是怎樣的?