伪操作

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 更改默认基数