伪操作

1、数据定义及存储器分配伪操作

类型 占用空间大小
DB 1 字节
DW 2 字节,字
DD 4 字节,双字
DQ 8 字节,四字
DT 10 字节

例:

DATA_TYTE    DB 10, 4, 10H

DATA_WORD    DW 100, 100H, -5

DATA_DW      DD 3*20, 0FFFDH

MESSAGE      DB 'HELLO'

ABC          DB 0, ?, ?, ?, 0     ; 问号为保留空间,不定义初值

ARRAY1       DB 2 DUP(0, 1, 2, ?) ; DUP 为重复产生括号内的数 N 次,可以嵌套使用

PARA_TAB1    DW PAR1 + 100H       ; 此处存入 PAR1 的偏移地址,可以使用表达式

PARA_TAB2    DD PAR2              ; 此处存入 PAR2 的偏移地址及段地址

ARRAY        DW $+4, $+4          ; 若此处首地址为 1000H, 则数据为 1004H、1006H

2、常量(实际上是宏)

CONSTANT     EQU 256

DATA         EQU HEIGHT + 12

ALPHA        EQU 7

BETA         EQU ALPHA - 2

ADDR         EQU VAR + BETA

B            EQU [BP +8]

P8           EQU DS:[BP + 8]

ALPHA1       = 7

ALPHA1       = 8               ; 等于操作可重复使用

3、段定义伪操作

段名      SEGEMENT [定位类型] [组合类型] ['类']

          ASSUME CS:段名1, DS: 段名2, ES:段名3, SS:段名4

          ASSUME NOTHING

          ...

段名      ENDS

定位类型 PARA 段的起始地址必须从小边界开始,
  BYTE 段的起始地址任意
  WORD 段的起始地址为偶数
  PAGE 段的起始地址为 256 的倍数
组合类型 PUBLIC 段连接时与有相同名字的分段连接在一起
  COMMON 段在连接时与其他同名分段地址相同,产生覆盖
  AT expression 段地址是表达式计算结果,代码段除外
  STACK 段连接时为堆栈段的一部分
  MEMORY 段连接时该段地址值最大,仅第一个有效,其他成为 COMMON
'名称' 连接时用于组成段组的名称
     

4、程序起止伪操作

NAME      模块名

TITLE     模块名   ; 功能同上,如果都不用,默认为文件名

          ...

title:

          ...

END       title    ; title 一般为开始运行处标号

5、对准伪操作

EVEN 使下一地址为 2 的倍数
ORG expression 使下一地址为表达式值
ORG $ + 8 使下一地址跳过 8 字节,$ 为当前地址

6、基数伪操作

1000 使用默认进制,一般为 10 进制
00101100B 二进制
178D 十进制
0FFFFH 十六进制
1777O 八进制
RADIX expression 更改默认基数