size 相当于TYPE与LENGTH的乘积,X1的类型为BYTE返回值1,LENGTH对DUP时返回返回值也是1,所以SIZE值为1。
size是:取变量数据项长度算符。
SIZE算符,汇编程序将回送分配给该变量的字节数,即
SIZE=LENGTH TYPE
例如:
ARRAY DW 50 DUP(0) 则
SIZE ARRAY=50 2=100
要注意:对字符串变量求其长度,使用SIZE不能达到目的。
例如:
ST DB ’ABCDEFG’ 则
SIZE ST值为1而不是7,欲求字符串长可用COUNT EQU $-ST,则COUNT值为7,其中$为定义ST一串字符后下一个可用的偏移地址。
语法
sizeof有两种语法形式,如下:
一、sizeof(type_name);//sizeof(类型);
二、sizeof object;//sizeof对象;
例子
int i;
sizeof(i);//ok
sizeof i;//ok
sizeof(int);//ok
sizeof int;//error
sizeof计算对象的大小也是转换成对对象类型的计算,也就是说,同种类型的不同对象其sizeof值都是一致的。sizeof对一个表达式求值,编译器根据表达式的最终结果类型来确定大小,一般不会对表达式进行计算。
参考资料来源:百度百科-sizeof
size返回的是一个变量占用的总的存储单元的大小,如果是1,难道33H,分配的10H个空间放在哪里啊?
追答只是返回一个结果,不是所定义变量里面的某一个具体的值,利用DUP所分配的10个字节还是在数据段X1这个变量所指示的位置里
本回答被提问者采纳