A. 匯編語言的標號和變數有什麼區別
在匯編語言中,變數與標號都是用戶定義的符號地址,但它們具有不同的屬性和用途。標號有兩個屬性:段基地址和偏移地址;而變數則有三個屬性:段基地址、偏移地址和數據類型。標號通常只在代碼段中定義,而變數可以定義在數據段和代碼段。
計算機匯編語言利用符號來代替目標碼,使源程序更易於理解和記憶。所有變數名、標號名、記錄名、指令助記符和寄存器名等統稱為符號。這些符號可通過偽操作命令重新命名,或通過指令定義新的名字及類型屬性。
標號是為一組機器指令所起的名字。它具有三個屬性:段屬性、偏移屬性和類型屬性。段屬性即段地址,偏移屬性是到段首地址的距離,類型屬性是距離屬性,指標號和轉移指令的距離。標號的定義方法有三種:隱含說明、用LABEL定義和用EQU定義。
標號在匯編語句中的使用包括無條件轉移、循環轉移和條件轉移。屬性分離符如SEG、OFFSET和TYPE可用於獲取段地址、偏移地址和類型。
變數代表數據,這些數據在程序運行期間可以被修改。變數具有段屬性、偏移屬性和類型屬性。變數的定義方法有三種:用偽指令DB、DW、DD定義,用LABEL定義和用EQU定義。
變數可以作為存儲單元的直接地址或相對定址中的偏移量。屬性分離符SEG和OFFSET與標號相同,而TYPE運算符回送變數類型的位元組數。
LENGTH運算符可獲取變數定義時使用DUP的情況下的數據項個數,而SIZE運算符則回送分配給該變數的位元組數。
符號除了表示變數和標號外,還可表示常量、段名、過程名、寄存器名和指令助記符等。符號常數、指令助記符、寄存器、段名和過程名等都有各自的屬性。
宏定義格式包括宏指令名和形式參數,而宏調用格式則包括宏指令名和實參數。每當引用宏指令名時,匯編程序會對宏調用進行宏展開,用宏定義體取代源程序中的宏指令並用實參數取代宏定義中的形式參數。