MASM6.11的一个BUG

 

最近在用MASM6.11编程时,笔者发现了MASM6.11的一个BUG

 

这个BUG是这样的:在MASM6.11中,当给结构(STRUC)的成员赋初始值$-0时,该成员值本应该为在段中当前位置,但结果却总是为0;而在给普通变量赋初始值$-0时,却会给出正确的值;或者程序运行时给结构成员赋值$-0 时也会给出正确的值。

 

BUGMASM6.15上同样出现,但在TASM5MASM5上却没有出现。

 

下面举一个例子来说明这个BUG

 

 

S STRUC

   A  DW  0

S ENDS

 

DATA SEGMENT USE16

   VAR1  DW  0AAH

   VAR2  S  <$-0>

   VAR3  DW  $ - 0

   VAR4  DW  0BBH

DATA ENDS

 

 

该数据段经由MASM6.11编译后,初始值为:AA  00  00  00  04  00  BB  00;而正确的值(经由TASM5MASM5编译)应该为:AA  00  02  00  04  00  BB  00

 

以上就是这个BUG

 

你可能感兴趣的:(MASM6.11的一个BUG)