MASM6.11中指针变量初始化

MASM6.11中指针变量初始化


在MASM6.11中,我们可以用数据定义语句(DB/DW/DD/DF/DQ/DT)来定义并/或初始化变量,如:
  VAR1  DB  0ABH


指针变量就是存放其他变量地址(指针)的变量。定义指针变量和定义普通变量一致(实际上,根本没有指针变量一说,
只是我根据它的功能"杜撰"的:)),只是是使用其他变量或标号来初始化。如下:
  VAR1  DB 0ABH
    P1  DW  VAR1
    P2  DD  START

MASM6.11根据指针变量所在的定义段是USE16还是USE32(注意:不是初始化变量/标号所在的段),以及指针变量定义的大小不同而初始化不同的值。如指针定义如下:
  P  DW/DD/DF/DQ/DT  VAR1

MASM6.11根据不同情况为指针变量准备的初始值如下:

 

P 所在段(不是 VAR1 所在段)        USE16                     USE32
DW                                    VAR1 的 OFFSET              VAR1 的 OFFSET
DD                                     VAR1 的 SEG:OFFSET      VAR1 的 OFFSET
DF                                      VAR1 的 SEG:OFFSET      VAR1 的 SEG:OFFSET
DQ                                     VAR1 的 SEG:OFFSET      VAR1 的 OFFSET
DT                                      VAR1 的 SEG:OFFSET      VAR1 的 OFFSET

 

一个特殊的标号——'$',表示当前偏移。它和上面说的变量和标号一样可以为指针变量初始化。下面举例:

DATA SEGMENT USEX
      DB 0CCH
VAR1  DT $
      DB 0CCH
VAR2  DQ $
      DB 0CCH
VAR3  DF $
      DB 0CCH
VAR4  DD $
      DB 0CCH
VAR5  DW $
DATA ENDS

MASM6.11编译后,初始化后段的内容如下:
USE16
CC
01 00 F9 10 00 00 00 00 00 00
CC
0C 00 F9 10 00 00 00 00
CC
15 00 F9 10 00 00
CC
1C 00 F9 10
CC
21 00
CC

USE32
CC
01 00 00 00 00 00 00 00 00 00
CC
0C 00 00 00 00 00 00 00
CC
15 00 F9 10 00 00
CC
1C 00 00 00
CC
21 00
CC

你可能感兴趣的:(c)