天天看點

二、彙編系統的基本原理

彙編系統概述

  • 每一種特定型号的計算機系統都有自己特定的機器指令集合,集合中每條指令都代表一項具體的操作,例如從記憶體取資料到寄存器。這個機器指令集合就是機器語言,由機器語言編寫的程式就稱為機器程式。機器指令本質上是一個特定長度的二進制串,特定的位表示操作碼,而另外的位表示操作數。
  • 由于機器程式都是由二進制的機器指令組成的,是以在編寫機器程式的時候,不僅要記住特定操作碼的二進制表示,還需要記下各個資料的位址的二進制表示。這是十分不友善的,而且容易出錯,程式也很難讀懂。于是人們就開始使用助記符(彙編指令)代表機器指令的操作碼,并且使用僞指令(即不對應任何機器指令,隻用于助記)和标号幫助确定資料或代碼的位置,這就是彙編語言了。由于彙編指令和機器指令是相對應的,是以每種特定型号的計算機系統都有自己的彙編指令集合。
  • 由彙編指令編寫的程式就是彙編源程式,計算機是不能直接執行彙編源程式的,而必須由 一個特殊程式根據僞指令的控制把彙編源程式轉化為對應的機器語言程式。這個特殊的程式就是彙程式設計式。

彙程式設計式

  • 基本工作概述:

    (1)将每一條将執行彙編指令轉換成對應的機器指令。

    (2)處理源程式中出現的僞指令。

    說明:這一工作通常需要對彙程式設計式進行超過一次的掃描。

  • 為了計算各彙編語句中标号的位址,人們在彙程式設計式中設立單元位址計數器LC,其初值一般為0。以後每處理完一條可執行的彙編語句和與存儲配置設定有關的僞指令,LC的值就增加相應長度,這樣LC的值始終是下一個存儲單元的相對位址。當處理一條彙編語句标号時,就将LC當時的值定義為标号值。由于符号使用可能 出現在符号定義前,是以整個彙程式設計式的工作要通過對源程式進行二次掃描才能完成。

彙程式設計式的2次掃描

二、彙編系統的基本原理

裝配程式

  • 概述:裝配程式也稱為連接配接程式,該程式主要完成以下兩個任務:

    1、裝入:指讀入可‘複位’位的機器代碼,修改‘複位’位的位址,把修改後的指令和資料放在記憶體的适當位置或者形成可執行檔案。

    2、連接配接:把幾個可‘複位’位的機器代碼檔案連接配接成一個可執行程式,這些檔案可以是分别彙編得到的,也可以是系統提供的程式庫機器代碼。

  • 這種裝配我們稱為相對裝配,裝配程式從作業系統得到整個使用者程式的裝入起始位址, 彙程式設計式第一次掃描結束時,本程式段長度己經求出。裝配程式的工作通過對各程式段的目标塊進行二次掃描完成。

宏指令

  • 概述:用彙編語言進行程式設計時,使用者經常會書寫完全相同或類似的語句,為了程式設計友善,彙程式設計式往往向使用者提供宏指令技術。按照這一技術,程式員可以相當自由地将一 組彙編語句定義成一條新指令——宏指令。宏指令一經定義,使用者就可以在程式段其他地方書寫這條指令,而将宏指令替換成原來指令序列的工作留給宏指令處理程式去完成。
  • 宏指令格式:

    [ 宏指令名 ] MACRO [形式參數]

    代碼段

    ENDM

  • 工作原理:在使用宏指令技術時,使用者應該先進行宏定義,将宏指令和一串指令序列聯系起來。 各種彙編語言在宏指令定義開始和結束的規定上存在着微小差異。
  • 宏指令定義以後,使用者就可以直接在程式中書寫宏指令,稱為宏調用。宏指令處理程式對宏指令定義開始語句和結束語句之間語句一一進行必要的變量資訊替換,然後依次插入宏指令調用處,則這一過程稱為宏指令展開。

繼續閱讀