標識符和表達式是程序設計經(jīng)常用到的兩個基本概念。在用高級語言進行程序設計時,如果程序要對某個變化的量進行處理時,通常都要對該變化量定義一個具有某種數(shù)據(jù)類型的符號名,用該符號名也就等于使用了該變化量。在匯編語言中,也是如此,所不同的是它們的說明和引用方式不同。
4.1 標識符
在匯編語言中,標號、內存變量名、子程序名和宏名等都是標識符,它一般最多由31個字母、數(shù)字及規(guī)定的特殊字符(?、@、_、$)等組成,并且不能用數(shù)字開頭。通常情況下,匯編語言不區(qū)分標識符中字母的大小寫。
和高級語言的變量名一樣,一般要求標識符盡可能取得有點含義,這會大大改善程序的可讀性,并有助于對程序的理解。但標識符不能是匯編語言的保留字,匯編語言的保留字主要是指:指令助憶符、偽指令定義符、寄存器名以及一些具有特殊含義的字符串等。
例如:MSG1、ERRMSG2、ASC1、asc2等是合法的標識符,而1a、ah、mov等就不是合法的標識符。
試比較ABCDH和0ABCDH之間的差異。前者是標識符,而后者是十六位進制數(shù)值。
4.2 簡單內存變量的定義
在編程序時,我們往往要根據(jù)程序的需要定義一些內存單元。在高級語言程序中,要給存儲單元取一個符號名,然后通過引用該符號名來訪問其所對應的存儲單元,而在匯編語言程序中要靈活一些,它可以給存儲單元取符號名,也可以不取符號名。當給存儲單元取符號名時,則可通過該符號 名來訪問其對應的存儲單元;當不給存儲單元取符號名時,則可通過存儲單元的偏移量(有效地址)來訪問它。
匯編語言中,常見的數(shù)據(jù)類型有字節(jié)、字和雙字等。下面介紹如何定義各種整型類型的內存變量,有關浮點類型變量的定義方式將在第11章中介紹。
4.2.1 內存變量定義的一般形式
定義數(shù)據(jù)變量語句是在程序中經(jīng)常使用的偽指令語句,其一般格式如下:
[變量名] 數(shù)據(jù)定義符 表達式1[, 表達式2, …, 表達式n] ;注釋
該定義格式的主要解釋如下:
、變量名必須是一個合法的標識符,它可以寫,也可以不寫;
、數(shù)據(jù)定義符用于確定內存單元的數(shù)據(jù)類型,常用的定義符有:DB、DW和DD等;
、表達式是定義內存單元時的初值表達式,一個定義語句可以有多個初值表達式,各表達式之間必須用逗號‘,’分開;如果某個存儲單元沒有初值表達式,則必須用一個問號‘?’來表示;
、在定義語句的后面可以書寫注釋內容,也可以不寫。
在定義變量時,雖然可以不寫變量名,但我們建議還是要寫,因為不寫變量名,就意味著只能用內存單元的偏移量來訪問它。這時,一旦內存單元的偏移量發(fā)生變化,那么,程序中的所有引用都要修改,這不僅增加了程序維護的工作量,而且也容易因遺漏修改而出錯。
4.1 標識符
在匯編語言中,標號、內存變量名、子程序名和宏名等都是標識符,它一般最多由31個字母、數(shù)字及規(guī)定的特殊字符(?、@、_、$)等組成,并且不能用數(shù)字開頭。通常情況下,匯編語言不區(qū)分標識符中字母的大小寫。
和高級語言的變量名一樣,一般要求標識符盡可能取得有點含義,這會大大改善程序的可讀性,并有助于對程序的理解。但標識符不能是匯編語言的保留字,匯編語言的保留字主要是指:指令助憶符、偽指令定義符、寄存器名以及一些具有特殊含義的字符串等。
例如:MSG1、ERRMSG2、ASC1、asc2等是合法的標識符,而1a、ah、mov等就不是合法的標識符。
試比較ABCDH和0ABCDH之間的差異。前者是標識符,而后者是十六位進制數(shù)值。
4.2 簡單內存變量的定義
在編程序時,我們往往要根據(jù)程序的需要定義一些內存單元。在高級語言程序中,要給存儲單元取一個符號名,然后通過引用該符號名來訪問其所對應的存儲單元,而在匯編語言程序中要靈活一些,它可以給存儲單元取符號名,也可以不取符號名。當給存儲單元取符號名時,則可通過該符號 名來訪問其對應的存儲單元;當不給存儲單元取符號名時,則可通過存儲單元的偏移量(有效地址)來訪問它。
匯編語言中,常見的數(shù)據(jù)類型有字節(jié)、字和雙字等。下面介紹如何定義各種整型類型的內存變量,有關浮點類型變量的定義方式將在第11章中介紹。
4.2.1 內存變量定義的一般形式
定義數(shù)據(jù)變量語句是在程序中經(jīng)常使用的偽指令語句,其一般格式如下:
[變量名] 數(shù)據(jù)定義符 表達式1[, 表達式2, …, 表達式n] ;注釋
該定義格式的主要解釋如下:
、變量名必須是一個合法的標識符,它可以寫,也可以不寫;
、數(shù)據(jù)定義符用于確定內存單元的數(shù)據(jù)類型,常用的定義符有:DB、DW和DD等;
、表達式是定義內存單元時的初值表達式,一個定義語句可以有多個初值表達式,各表達式之間必須用逗號‘,’分開;如果某個存儲單元沒有初值表達式,則必須用一個問號‘?’來表示;
、在定義語句的后面可以書寫注釋內容,也可以不寫。
在定義變量時,雖然可以不寫變量名,但我們建議還是要寫,因為不寫變量名,就意味著只能用內存單元的偏移量來訪問它。這時,一旦內存單元的偏移量發(fā)生變化,那么,程序中的所有引用都要修改,這不僅增加了程序維護的工作量,而且也容易因遺漏修改而出錯。