在Masm中,表示存储单元的有标号和变量,形式相同,前者有冒号,后者没有。伪指令offset和seg大部分教程中都表示取标号或变量的偏移地址和段地址,但稍有细微的区别:
假设有汇编代码如下:
1 datasg segment
2 dataName dw 1234h
3 datasg ends
4 codesg segment
5 start:
6 mov ax,start
7 mov ax,offset start
8 mov ax,seg start
9 mov ax,dataName
10 mov ax,offset dataName
11 mov ax,seg dataName
12 mov ax,datasg
13 mov ax,offset datasg
14 mov ax,seg datasg
15 codesg ends
16 end start
其中6、7行效果是相同的,取偏移地址;第8行是取start所在位置的段地址。
其中9行是取dataName的值,10行是取dataName的偏移地址,11行是取dataName的段地址。
其中12和14行效果是相同,取段地址;13行是取该段的长度。