大学生之家,大学生资讯发布平台
大学生之家

汇编语言特殊的数据结构形式

    发布时间:2018-09-17    阅读:
    来源:大学生之家
数据是指令中操作数的基本组成部分,数据的形式对语句格式有很大的影响。汇编程序能识别的数据项有常数,变量和标号。

  MASM汇编语言还有两种特殊的数据结构形式:结构和记录。

  1.常数

  常数是没有任何属性的纯数值。在汇编时常数的值已确定,并且在程序运行过程中,常数的值不会改变。常数分为两种类型:数值型常数和字符串型常数。

  1)数值型常数

  (1)二进制数:以字母B结尾,如01011101B。

  (2)八进制数:以字母Q或O结尾,如723Q,21O。

  (3)十进制数:以字母D(或省略)结尾,如1995D,3508。

  (4)十六进制数:以字母H结尾,例如:3A40H,5BH。

  2)字符串型常数

  用单引号括起来的字符串,如‘ABCD’,‘S|123456’等。每个字符在机内以ASCII码存放,例如‘A’在内存中为41H。

  2.变量

  变量用来定义存放在存储器单元中的数据。

  当存储单元中的数据在程序运行中随时可以修改时,这个存储单元中的数据可以用变量来定义。为了便于对变量的访问,要给变量取一个名字称为变量名。变量名应符合标识符的规定,它是存放数据存储单元的符号地址。

  定义变量可用变量定义伪指令(后面将介绍)。

  经过定义的变量,有三重属性。

  1)段属性(SEG)

  表示变量存放在某个逻辑段中(通常指变量所在段的段基址)。如上例中,变量DATA1、DATA2、DATA3放在逻辑段DATA中。当指令中要对这些变量进行存取操作时,需将段基址送至段寄存器中。

  2)偏移地址属性(OFFSET)

  表示变量在所在段的偏移地址,以字节数表示。例如,上面例子中DATA1的偏移地址为0,DATA2的偏移地址为1,DATA3的偏移地址为2。段基址和偏移地址组成变量的逻辑地址。

  3)类型属性(TYPE)

  表示变量占用存储单元的字节数,这一属性是由数据定义伪指令来规定的。变量可分别定义为8位,16位,32位,48位,64位和80位数据。

  3.标号

  标号是指令语句所在地址的符号表示。标号表明该指令在内存中的位置,常作为转移指令的操作数,确定程序转移的目标地址。

  与变量类似,每个标号也有三重属性,如下所述。

  (1)段属性(SEG):该标号所在段的段基址。

  (2)偏移地址属性(OFFSET):该标号所在段的偏移地址。

  (3)距离属性(DISTANCE):当标号作为转移类指令的操作数时,可在段内或段间转移,这时它们的距离属性不同。

  NEAR:只允许在本段内转移;

  FAR:允许在段间转移。

  设置标号距离可用隐含方式或伪指令LABEL定义其距离属性两种方式。

  (1)隐含方式:标号后面跟“”隐含其距离属性为NEAR,只能在本段中转移。

  (2)用LABEL伪指令定义距离属性。

  4.表达式

  表达式是操作数的常见形式,表达式由常数、变量、标号及连接它们的运算符组成。表达式的运算不由CPU完成,而是在程序汇编过程中进行计算确定,并将表达式的结果作为操作数参加指令所规定的操作。MASM允许使用的表达式分为以下两类。

  1)数字表达式

  数字表达式的结果是数字。

  例如:MOV DX,(6*A-B)/2

  指令的源操作数(6*A-B)/2是一个表达式。若设变量A的值为1,变量B的值为2,则此表达式的值为(6*1-2)/22,是一个数字结果,此表达式是数字表达式。

  2)地址表达式

  地址表达式的结果是一个存储单元的地址。当这个地址中存放的是数据时,称为变量;当这个地址中存放的是指令时,则称为标号。

  当在指令的操作数部分用到地址表达式时,应当注意其物理意义。例如,两个地址相乘或相除是无意义的,两个不同段的地址相加减也是无意义的。经常使用的是地址±(加减号)数字量。如SUM+l是指向SUM字节单元的下一个单元的地址。

  例如:MOV AX, ES:[BX+SI+1000H]

  BX+SI+1000H为地址表达式,结果是一个存储单元的地址。
计算机学习推荐
  • 扫一扫 分享悦读 ➤
  • 扫码可以分享到微信 qq朋友圈
计算机学习热点