A. 汇编语言的标号和变量有什么区别
在汇编语言中,变量与标号都是用户定义的符号地址,但它们具有不同的属性和用途。标号有两个属性:段基地址和偏移地址;而变量则有三个属性:段基地址、偏移地址和数据类型。标号通常只在代码段中定义,而变量可以定义在数据段和代码段。
计算机汇编语言利用符号来代替目标码,使源程序更易于理解和记忆。所有变量名、标号名、记录名、指令助记符和寄存器名等统称为符号。这些符号可通过伪操作命令重新命名,或通过指令定义新的名字及类型属性。
标号是为一组机器指令所起的名字。它具有三个属性:段属性、偏移属性和类型属性。段属性即段地址,偏移属性是到段首地址的距离,类型属性是距离属性,指标号和转移指令的距离。标号的定义方法有三种:隐含说明、用LABEL定义和用EQU定义。
标号在汇编语句中的使用包括无条件转移、循环转移和条件转移。属性分离符如SEG、OFFSET和TYPE可用于获取段地址、偏移地址和类型。
变量代表数据,这些数据在程序运行期间可以被修改。变量具有段属性、偏移属性和类型属性。变量的定义方法有三种:用伪指令DB、DW、DD定义,用LABEL定义和用EQU定义。
变量可以作为存储单元的直接地址或相对寻址中的偏移量。属性分离符SEG和OFFSET与标号相同,而TYPE运算符回送变量类型的字节数。
LENGTH运算符可获取变量定义时使用DUP的情况下的数据项个数,而SIZE运算符则回送分配给该变量的字节数。
符号除了表示变量和标号外,还可表示常量、段名、过程名、寄存器名和指令助记符等。符号常数、指令助记符、寄存器、段名和过程名等都有各自的属性。
宏定义格式包括宏指令名和形式参数,而宏调用格式则包括宏指令名和实参数。每当引用宏指令名时,汇编程序会对宏调用进行宏展开,用宏定义体取代源程序中的宏指令并用实参数取代宏定义中的形式参数。