数据定义伪指令格式:
[存储单元名] DB(DW,DD等) 操作数
1)存储单元可以起名也可以不要名字
2)数据定义伪指令
DB |
字节单元 |
DW |
字单元 |
DD |
双字单元 |
DQ |
四字单元 |
DT |
十字节单元 |
3)操作数用于指出存储单元的内容(该单元的值)
1、操作数是常数或表达式
例:定义字节单元X=56,字单元E_1=2030H,双字单元CARRY=12345678H。
DATAS SEGMENT
X DB 56
E_1 DW 2030h
CARRY DD 12345678H
DATAS ENDS
如果反汇编查看数据段中的数据时是下面的结果:
原因:程序开始运行前,DS不指向你的DATA段。
在程序开始运行,对DS赋过值以后,DS才指向你的DATA段。
此后,在程序运行中,只要不重新给DS赋值,它就不会变。
当程序执行了4CH功能调用,结束运行后,DS也不再指向你的DATA段。
所以:
例:一次定义多个存储单元。“?”代表空单元
xx DB 12,0,0E4H
YY DW 5,?,6*3
例:用DUP()子句重复定义相同的操作数
AVE DB 8,3 DUP(2),-6
MSN DB 5DUP(?) ;定义5个字节空单位
SCOUNT DW 100 DUP(1) ;定义100个字单位,初始值为1
例:DUP()子句可以嵌套
BUF DB 2 DUP(96,2DUP(1,4),8)
2、操作数是字符串
例:定义字符及字符串,字符串要用括号括起来
MES1 DB 'A','B'
MES2 DW 'AB'
MES3 DB 'HELLO'
如果用DW定义字符串,只能是两个字以内,并且DW将两个字符看成一个字
例:分别用DB和DW定义单个字符。
CHAR DB 'X','+','Y'
SYMB DW 'X','+','Y'
对于字符而言,用DB定义。