关于汇编语言的一道简单题
问题描述:
关于汇编语言的一道简单题
PARTNO DW
PNAME DB 16 DUP(?)
COUNT DD
PLENTH EQU $-PARTNO
则PLENTH的值为多少?
我想知道,$-PARTNO它里面的PARTNO指的是什么?是所占空间?还是长度?类型?$是什么?
答
PARTNO DW ? 这一句是定义内存空间,占用一个字,即两个字节
PNAME DB 16 DUP(?)这一句是定义16个字节内存空间.
COUNT DD ? 这一句是定义一个双字占4个字节内存空间.
PLENTH EQU $-PARTNO 这一句是定义一个常数PLENTH,它的大小等于当前地址-PARTNO地址
也就等于2+16+4=22,其中$代表当前地址.它又没说它们的地址是连续的,为什么可以直接减呢?这你可以汇编看一看映像文件,一般编译器如果在上一个数据不出现单数的情况下,都是连续存放否则进行偶数对齐,加快访问速度。不同编译器可能结果不同,但像MASM等编译结果应该如此。