在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行是取该段的长度。