字单元定义实例
字变量和字常量的定义:
WNUM EQU 5678H
; 定义 WNUM 为常量
COUNT DW 20H
; 定义 COUNT 变量,假设在数据段的偏移地址为 10H
字变量和字常量的应用:
MOV AX,[BX+SI+WNUM] ; MOV AX,[BX+SI+5678H]
MOV AX,COUNT ; MOV AX,[0010H]
MOV AX,[SI+COUNT] ; MOV AX,COUNT[SI]
; MOV AX,[SI+10H]
LEA BX,COUNT ; LEA BX,[0010H]
MOV BX,OFFSET COUNT ; MOV BX,0010H
字变量和字常量
定义双字单元伪指令 DD
DD 伪指令用于分配一个或多个双字单元,并可以将它们初始化为指定值
初值表中每个数据是一个 32 位的双字量( Double Word ):
可以是有符号或无符号的 32 位整数
也可以用来表达 16 位段地址(高位字)和 16 位的偏移地址(低位字)的远指针
vardd DD 0,?,12345678h
farpoint DD 00400078h
其他数据单元定义伪指令
定义 3 字伪指令 DF ――用于为一个或多个 6 字节变量分配空间及初始化
6 字节常用在 32 位 CPU 中表示一个 48 位远指针( 16 位段选择器 :32 位偏移地址)
定义 4 字伪指令 DQ ――用于为一个或多个 8 字节变量分配空间及初始化
8 字节变量可以表达一个 64 位整数
定义 10 字节伪指令 DT ――用于为一个或多个 10 字节变量分配空间及初始化
10 字节变量可以表达扩展精度浮点数
例 : 数据定义综合应用
.model small
.stack
.data
bvar DB 16
wvar DW 4*3
dvar DD 4294967295 ; = 232 - 1
qvar DQ ?
DB 1,2,3,4,5
tvar DT 2345 ; 定义了 BCD 码 2345H
abc DB 'a','b','c'
msg DB 'Hello',13,10,'$'
bbuf DB 12 DUP('month')
dbuf DD 25 DUP(?)
CALLDOS EQU <int 21h>
.code
.startup
mov bl,bvar
mov ax,word ptr dvar[0]
mov dx,word ptr dvar[2]
; 取双字到 DX.AX
mov dx,offset msg
mov ah,09h
CALLDOS
.exit 0
end
定位伪指令
定位伪指令控制数据的偏移地址
ORG 参数
ORG 伪指令是将当前偏移地址指针指向参数表达的偏移地址:
ORG 100h ; 从 100h 处安排数据或程序
ORG $+10
; 使偏移地址加 10 ,即跳过 10 个字节空间
MASM 中,符号“ $ ”表示当前偏移地址值
EVEN ; 从偶地址开始
ALIGN n ; 从 n 的整数倍地址开始
全站搜索