正文 第四章 彙編語言程序設計(一)(2 / 3)

②彙編過程控製譯碼指令語句(即偽指令和數據存儲控製譯碼指令)。若想用彙編語言來編寫程序,僅有符號指令是不夠的。例如,如何給程序定位,即程序的起始地址如何表示;怎樣表示被彙編的程序已結束;怎樣為程序指定一個存儲區;怎樣把一些表格或數據存入存儲器;有時還要定義一些符號等等。因此,我們還需要一些控製彙編的偽指令,這種指令僅給彙編程序提供某些編輯信息,指示彙編程序做某些特定的操作,它不產生目標代碼,其形式和意義可以由彙編程序。

同樣Z80組成的微型機係統,這些偽指令的功能可能不同,即具有不同的彙編文本,偽指令可能有區別。這些偽指令又可以分為偽指令語句和數據存儲控製譯碼指令語句,實際上每一個語句(即每一殺偽指令),就是一段用符號指令編寫的程序,偽指令是程序入口。

③宏指令。宏彙編程掙,除上述兩類指令語句外,還要設置宏指令(本書不作介紹)。

4.1-3 彙編語言語句結構

一、彙編指令語句

彙編指令語句的格式是,標號/操作碼/操作數/注釋。

它由標號、操作碼、操作數和注釋四段組成。下麵對各段分劃加以說明。標號:編寫源程序時,給存放數據、運算結果或指令的存儲單元所取的名字,稱為“標號”。並不是每一條符號指令或數據存儲單元都要有標號,隻有那些內指令所要尋址的單元,或者轉移指令所要訪問的語句,才需要有標號。標號是用來表示16位二進製信息的符號,一般由一至六個字符數字符串組成(當然,也有些機器不受此限製),其第一個字符必須是字母而其餘可以是字母或數字。但是下列標號是非法的:即字符靠和全部;寄存器符,以及轉移指令的條件標誌,最好不要用記憶符作為標號。

操作碼:是指專的助記符。例如10是數據傳送操作的助記符,是加的助記符。Z80指令係統共有2種助記符70多種。

操作數:它是操作碼要操:作的數據。在Z80指令係統中,操作數可以有以下四種類型的信息,即寄存器、寄存器對、即立數(8位或16位二進製數)以及16位(二進製)存儲器地址。

操作數可以是一項或兩項。若是兩項操作數,它們之間要用逗號隔開。當然,也有無操作數指令。例如或隱含尋址指令。

注釋,注釋對機器目標代碼沒有影響,加入注釋的目的是為了使源程序更容易閱讀,特別是在調試程序時,寫出注釋將會帶來很多:方便。精心注釋的程序易於調試。寫注釋雖然要花費時間但可以收到事半功倍的效果,注釋要簡明扼要,最好說明為仟麼要執行這條指令,或者在什麼條件下執行這條指令。此外,在調子程序時,要說明進入子程序的條件,以及這段子程序的主要功能和執行結果。

二、彙編過程控製譯碼指令語句

這類指令可分為兩種,一種是偽指令,另一種是數據存儲控製譯碼指令。編輯/彙編程序中共有8條,前四條是偽指令,後四條是數據存儲控製譯碼指令.

下麵介紹這八條指令:

1.彙編目標代碼起始地址說明,用它來標識源程序的開始。在彙編程序中,有一個位置計數器,它指出跟在後一條指令碼,或一項要處理的數據的存儲單元位置。

用操作數設置位置計數器的值,表達式的值總是在範圍內(對於區為6410)。如果表達式含有標號,則標號應預先賦值。

在每個程序的第一條指令或數據字節之前,若沒有設置指令,彙編將從單元開始。

第一條0110偽指令將200011置入位置計數器,以下這段程序的目標程序的起始地址,將從存儲單元地址200011開始;第二條080偽指令把20500置入位置計數器10,從這個地址開始,繼續彙編機器指令或數據。

2.符號賦值命令

偽指令的功能是將操作:數賦予標號段中的符號。操作數若是標號或表達式中有標號,必須在使用賦值。

在彙編過程遇到口指令,就會將標號段的符號列入符號表,並把操作數賦給它,符號重新賦值命令。

偽指令是用來將操作數賦給標號段中的符號,在某一程序段中可以重複的對同一符號賦給不同的值,它與命令唯一的區別是:在同一程序中,標號段中的同一名字可以在多個命令中出現。

該命令用來表示源程序模塊的結束。每次彙編時,隻允許出現一個語句,並且它總是源程序模塊的最後一個語句。

操作數段的標號或地址值,用來表示將來執行時該程序的起始地址,也就是此程序塊的執行地址。

該命令表示在目標代碼中留出一個字節存放指令給出的數據或代碼。該命令表示,在目標代碼中,留出兩個字節存放此指令給出的兩字節數值。的功能與的功能基本相似,兩者的區別僅在於是定義一個字節,而是定義一個字。所以主要用來指定地址。因為雙定義的字的兩個字節中的高位字節放在後一單元內,這與指令中地址的規定是一致的。

該命令是讓彙編程序保留一塊存儲單元空間,其區域大小由此指令的操作數確定,其地址區域的開始地址是由現行位置計數器定義。

命令隻表示在目標程序中保留指定數量的相繼存儲單元,而仁編程序在這些保留存儲單元中,並不寫入任何特定的值,定義字符串存儲區。

4.2 彙編語言程序設計

4.2-1 概述

程序是指令的有序集合,一條指令隻能完成有限的功能,要完成比較複雜的功能,要有一組按一定次序排列指令,即程序。這裏介紹的是彙編語言程序的編製。前麵曾說過,彙編語言程序比高級語言程序精煉,占內存少以及執行時間短。但是隻有精心設計,選擇合適的指令和合理的結構才能達到這個目的。因為實現某一功能的程序並不難的,程序有簡有繁,占用內存單元有多有少,執行時間有長有短,我們力求編製的程序簡沾、占用內存少、執行時間短。

一個複雜的程序,往往是由一些簡單的較短的程序段組成。因此,為了編製和閱讀抆長較複雜的程序,首先應該掌握各種常用的基本程序的編製。程序設計的步驟一般有以下幾步分折課題;確定算法或解題思路;根據流程編製源程序;上機調試源程序;修改源程序,最後確定源程序。