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

变量定义语句有两种不同的格式

    发布时间:2018-09-17    阅读:
    来源:大学生之家
指示语句又称伪指令。指示语句没有对应的机器指令,不由CPU执行,而是在汇编程序汇编时识别,用于说明CPU的类型、段结构、源程序起止信息和段内存的安排等。

  MASM有丰富的伪指令。必须搞清这些伪指令的功能及用法,才能编写出高质量的汇编语言源程序。

  MASM的伪指令可分为变量定义语句、符号定义语句、段定义语句、段分配语句、过程定义语句、群定义语句、结构定义语句、记录定义语句等。

  本节重点讨论前五种伪指令语句,这些语句在程序中比较重要,使用频繁。

  4.3.1 变量定义语句

  变量定义语句用来定义字节、字或双字等变量。变量定义语句有两种不同的格式。

  1.格式1

  [变量名]DB/DW/DD/DF/DQ/DT表达式

  功能:为变量分配1个字节/字/双字/长字/四字/十字节的存储单元,并给它们赋值。格式1又可分为以下几种具体用法:

  2.格式2

  格式2用于定义重复变量。

  4.3.2 符号定义语句

  编制源程序时,经常将常数或表达式等用一特定符号表示,这时需要用符号定义语句。符号定义语句不占用内存,有两种基本格式。

  1.等值语句(EQU)

  格式:符号EQU表达式

  功能:将表达式的值赋给EQU左边的符号。

  例如:COUNT EQU 5;COUNT等于5

  NUMEQU 13+6-2;NUM等于表达式的值

  等值语句在汇编时不产生任何目标代码,也不占用存储单元。但在同一个程序中,不能对已定义的符号重新定义。

  2.等号语句

  格式:符号 表达式

  等号语句与EQU语句有同样的功能,区别在于等号语句定义的符号允许重新定义,使用更加方便灵活。

  4.3.3 段定义语句

  在汇编程序设计中,需要将存储器分成若干段,CPU访问存储器时,凭借段寄存器对各段进行访问。通常用段定义语句(SEGMENT/ENDS)来定义各种类型的逻辑段。在MASM5.0以上的汇编语言版本中,有完整定义伪指令和简化段定义两种。

  1.完整的段定义语句

  1)段定义语句

  格式:段名SEGMENT[定位类型][,组合类型][,字长选择][,类别]

  任何一个逻辑段从SEGMENT语句开始,以ENDS语句结束。伪指令名SEGM ENT和ENDS是本语句的关键字,不可以默认,并且总是成对出现的。语句中段名是必选项,定位类型、组合类型、字长选择、分类名为可选项。

  (1)段名(SEG NAME)

  用户自己选定,不能省略,一个段开始与结尾用的段名应一致。

  (2)定位类型(ALIGN TYPE)

  定位类型表示对段的起始边界的要求,可有以下五种选择:

  ①PAGE(页):表示本段从一页的边界开始,一页为256个字节,所以PAGE定义的边界其地址能整除256,这样段的首地址的最后八位二进制数一定为‘0’(即以00H结尾)。

  ②PARA(节):表示本段从一个节的边界开始,一节为16个字节,所以段的起始地址最后四位二进制数一定为‘0’(即以0H结尾)。PARA通常隐含,即未定义定位类型时,其定位类型为PARA。

  ③DWORD(双字):表示本段从4的倍数地址开始。

  ④WORD(字):表示本段从偶数地址开始,该地址的最低位应为0。

  ⑤BYTE(字节):表示本段可从任何地址开始定位。

  (3)组合类型(COMBINE TYPE)

  组合类型用来对各个逻辑段之间的连接方式提出要求,可供选择的参数有以下六种:

  ①NONE:表示该段与其他同名段不进行连接,独立存于存储器中。如果语句中省略组合类型,则MASM把它作为NONE处理。

  ②PUBLIC:该段可与其他模块中的同名段在满足定位类型的前提下,由低地址到高地址连接起来,组合成一个较大的逻辑段。

  ③COMMON:该段与其他模块中的同名段采用覆盖方式在存储器中定位,即它们具有相同的段首地址,共享同一个存储区,而共享存储器的长度由同名段中最大的段确定。段的内容为所连接的最后一个模块中的内容,以及没有覆盖到的前面COMMON段的部分内容。

  ④MEMORY:定义该段与其他模块中的同名段具有相同的首地址,采用覆盖方式在存储器中进行连接。与COMMON的不同处是:带有MEMORY参数的逻辑段覆盖在其他同名段的最高地址。
计算机学习推荐
  • 扫一扫 分享悦读 ➤
  • 扫码可以分享到微信 qq朋友圈
计算机学习热点