彙編器工做原理

爲了翻譯彙編語言程序,彙編器須要知道兩件事情:每一個助記符的操做碼和每一個標號的地址。操做碼信息以表形式內置在彙編器中,該表給出對應每一個助記符的操做碼。這個表被稱爲操做碼錶。翻譯

       對慶標號的地址必須由彙編器經過掃描源程序肯定。彙編器第一遍掃描源程序只是爲了肯定每一個標號的地址。只要在某行的開始發現標號,彙編器就將該標號及其地址輸入到符號表中。在第一遍掃描結束時,符號表將包含程序中使用的全部標號及其地址。彙編器而後執行第二遍掃描,使用操做碼錶和符號表中的信息彙編每條指令。io

                                             ld    x                 location_counter變量

                                             st   y                            3(address)二進制

                                             halt程序

第一遍掃描此處---->  x :     dw  5語言

                                  y:     dw  0co

                                  z:     dw  xlocation

                                                圖3-19

  彙編器首先將內部變量location_counter初始化爲0.在第一遍掃描時,彙編器從上向下一次一行地掃描程序。每次移到下一行,彙編器就將location_counter加1。所以location_counter中的值老是等於當前行的地址。若是在某行的開始發現標號,彙編器就將該標號和location_counter中的當前值輸入到符號表。例如,當彙編器在圖3-19中第一條dw所在的行發現 x 時,location_counter包含3(這是 x 的地址)。彙編器將 x 和3輸入到符號表中,將lcoation_counter加1,而後繼續掃描下一行。在第一遍掃描結束時,彙編器已經創建起如圖3-20所示的符號表。

                    符號表

          (由彙編器建立)

       符號     |      地址(十六進制)

----------------

       x          |     3

       y          |     4                                            圖3-20

       z          |      5

 

    在第二遍掃描時,彙編器根據操做碼錶和符號表中的信息「彙編」每條指令。例如,在第二遍掃描過和中處理

ld  x 指令時,彙編器在操做碼錶中查找助記符 ld ,在符號表中查找符號 x ,並檢索它們的值(分別是0和3).而後彙編器使用適當的位數(操做碼4位,地址12位),將這兩個值彙編成機器指令0000 0000 0000 0010(十六製表示是:0003)。

      若是彙編語言指令或僞指令中的地址是絕對地址,則彙編器必須將基轉換成二進制。

相關文章
相關標籤/搜索