彙編語言定義

什麼是彙編語言?

彙編語言是一種旨在與計算機硬件直接通信的低級編程語言。與由二進制和十六進製字符組成的機器語言不同,彙編語言被設計為可供人類閱讀。

彙編語言等低級編程語言是計算機底層硬件與編寫現代軟件程序的高級編程語言(如 Python 或 JavaScript)之間的必要橋樑。

關鍵要點

  • 彙編語言是一種將高級語言翻譯成機器語言的編程語言。
  • 它是軟件程序與其底層硬件平台之間的必要橋樑。
  • 彙編語言依靠語言語法、標籤、運算符和指令將代碼轉換為可用的機器指令。
  • 彙編語言可以通過單遍或多遍彙編器,每種彙編器都有特定的用途和好處。
  • 今天,彙編語言很少被直接編寫,儘管它們仍然在一些小眾應用程序中使用,例如在性能要求特別高的情況下。

彙編語言如何工作

從根本上說,計算機執行的最基本指令是二進制代碼,由 1 和 0 組成。這些代碼直接轉化為通過計算機物理電路的電流的“開”和“關”狀態。從本質上講,這些簡單的代碼構成了“機器語言”的基礎,這是一種最基本的編程語言。

當然,沒有人能夠通過顯式編程 1 和 0 來構建現代軟件程序。相反,人類程序員必須依賴各種抽象層,這些抽象層可以讓自己以對人類更直觀的格式表達他們的命令。

具體來說,現代程序員使用所謂的“高級語言”發出命令,這些語言利用直觀的句法,例如整個英語單詞和句子,以及諸如“and”、“or”和“else”等邏輯運算符。熟悉日常使用。

然而,最終這些高級命令需要被翻譯成機器語言。程序員不是手動這樣做,而是依靠彙編語言,其目的是在這些高級語言和低級語言之間自動轉換。第一種彙編語言是在 1940 年代開發的,儘管現代程序員和現代自然語言處理器很少花時間處理彙編語言,但它們仍然對計算機的整體功能至關重要。

在計算的早期,系統編程和應用程序編程都將完全使用彙編語言進行。如果沒有彙編語言,我們今天使用的許多現代計算機和更高級別的語言就不可能實現。

彙編語言的組成部分

句法

當用任何程序語言編寫任何代碼時,必須遵循一個可觀察的、特定的規則順序,以允許編譯器無錯誤地執行代碼。這些規則被定義為語法,它們包含諸如允許字符的最大數量、代碼行必須以什麼字符開頭或某些符號“即分號”的含義等標準。

標籤

標籤是表示存儲指令或數據的地址的符號。它的目的是在語句中引用時充當目的地。標籤可以在任何可以在彙編語言中使用地址的地方使用。符號標籤由標識符後跟冒號組成,而數字標籤由單個數字後跟冒號組成。

運營商

也稱為命令,運算符是出現在標籤字段之後的邏輯表達式。此外,它前面必須至少有一個空白字符。運算符可以是操作碼或指令。操作碼直接對應機器指令,操作碼包括與指令相關的任何寄存器名稱。或者,指令操作碼是彙編器已知的指令。

指示

指令是給彙編器的指令,告訴彙編過程中必鬚髮生什麼動作。指令具有為變量聲明或保留內存的重要性;這些變量可以稍後在流程中調用以執行更多動態功能。指令也用於將程序分成不同的部分。

彙編語言宏是一種模板鞋格式,呈現一系列或模式的語句。這個彙編語言語句序列可能對多個不同的程序是通用的。宏工具用於解釋宏定義,而宏調用被插入到源代碼中,其中“正常”彙編代碼將代替宏語句集。

助記符

助記符是操作的縮寫。將助記符輸入到每個彙編程序指令的操作碼中,以指定一個縮短的“操作碼”,該“操作碼”代表更大的完整代碼集。例如,助記詞“乘以二”有一套完整的代碼來執行助記詞。

高頻交易

今天,彙編語言仍然是計算機科學專業學生學習的主題,以幫助他們了解現代軟件如何與其底層硬件平台相關聯。在某些情況下,程序員必須繼續用彙編語言編寫,例如當對性能的要求特別高時,或者當所討論的硬件與任何當前的高級語言不兼容時。

與金融相關的一個例子是一些金融公司使用的高頻交易 (HFT) 平台。在這個市場中,交易的速度和準確性對於 HFT 交易策略證明有利可圖至關重要。因此,為了在競爭中獲得優勢,一些高頻交易公司直接用彙編語言編寫交易軟件,從而無需等待高級語言的命令被翻譯成機器語言。

許多人認為彙編語言的學習曲線最陡峭,並且是最難學習的計算語言。

的優點和缺點

彙編語言的執行速度通常比高級語言快。彙編語言代碼的插入刪除組件相對容易,與其他類型的語言相比,彙編語言通常需要更少的指令來完成任務。

想要更好地控制他們的計算機的程序員也經常使用彙編語言,因為彙編語言允許您直接操作您的硬件。由於其速度和重要性,一些程序是專門使用彙編語言編寫的,因為代碼通常可以保持較小。

彙編語言確實有幾個缺點。用彙編語言編寫的長程序通常需要較大的計算能力,不能在小型計算機上運行。有些人可能會發現彙編語言的語法更難記住,並且使用彙編語言進行編碼可能需要更長的時間,因為它更複雜。此外,彙編語言通常不能在不同品牌的不同計算機之間移植。與切換公司時員工福利的損失類似,語言無法無縫翻譯到不同的計算機。

優點
  • 與其他語言相比,執行可能更簡單

  • 與其他語言相比,執行通常更快

  • 允許直接控制硬件

  • 與其他語言相比,代碼可能會更小

缺點
  • 與高級語言相比,編程可能更具挑戰性

  • 彙編語言的語法很困難

  • 機器之間不可移植

彙編器的類型

彙編語言必須使用彙編程序翻譯成機器語言。有兩種主要類型的彙編器。

單程彙編器掃描一個程序一次並生成一個等效的二進製程序。這種類型的彙編器通過在助記碼表中查找代碼來驗證彙編語言代碼。單遍彙編器通常比多遍彙編器快,而且通常不需要構造任何中間代碼。

多遍彙編器意味著彙編器使用多遍。多遍彙編器在第一遍中創建一個包含每個符號及其每個值的表,然後在以後的遍中使用該表來生成新代碼。每個單獨的通道通常處理不同的特定任務。儘管通常速度較慢,但具有模塊化結構的多通道組裝器通常可以用於不同的機器。

彙編語言代碼示例

下面是 Netwide Assembler (NASM) 彙編語言代碼的示例。

彙編語言代碼示例。

洛約拉馬利蒙特大學

在此示例中,代碼末尾的 SYSCALL 指令觸發了存儲操作系統服務的內存部分。然後,代碼 RAX 用於調用要編寫的代碼,然後 RDI 退出。SYSCALL 函數被使用兩次來調用操作系統,並在代碼完成和退出時向系統指示。

什麼是彙編語言的例子?

最常用的彙編語言包括 ARM、MIPS 和 x86。

C++ 是彙編語言嗎?

C++ 不包含彙編代碼。C++ 計算語言由 C++ 代碼組成,編譯器將其翻譯成可執行的機器代碼。

Python 是一種彙編語言嗎?

Python 比彙編語言更先進。彙編語言被認為是低級語言,而高級語言(如 C、Java 或 Python)使用 0 和 1 代替數字、符號和縮寫。

今天如何使用彙編語言?

儘管與更高級的語言相比被認為是低級語言,但仍使用彙編語言。彙編語言用於直接操作硬件、訪問專用處理器指令或評估關鍵性能問題。這些語言還用於利用它們相對於高級語言的速度優勢來進行時間敏感的活動,例如高頻交易。

底線

彙編語言是低級代碼,它依賴於使用編碼語言輸入的指令與機器如何解釋代碼指令之間的強關係。使用將輸入轉換為機器可識別指令的彙編程序將代碼轉換為可執行操作。儘管在計算的早期很流行,但許多大型系統使用更高級的語言。