MASM – error A2042: statement too complex

在定义比较长的数据的时候会因为数据超过行限制而出现statement too complex或者line to long的错误提示,可以使用下面的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
    include \masm32\include\masm32rt.inc
; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
    .data
      kostka1 real4 -1.0,-1.0, 1.0, 1.0,-1.0, 1.0, 1.0, 1.0, 1.0
              real4 -1.0, 1.0, 1.0,-1.0,-1.0,-1.0,-1.0, 1.0,-1.0
              real4  1.0, 1.0,-1.0, 1.0,-1.0,-1.0,-1.0, 1.0,-1.0
              real4 -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,-1.0
              real4 -1.0,-1.0,-1.0, 1.0,-1.0,-1.0, 1.0,-1.0, 1.0
              real4 -1.0,-1.0, 1.0, 1.0,-1.0,-1.0, 1.0, 1.0,-1.0
              real4  1.0, 1.0, 1.0, 1.0,-1.0, 1.0,-1.0,-1.0,-1.0
              real4 -1.0,-1.0, 1.0,-1.0, 1.0, 1.0,-1.0, 1.0,-1.0
 
      _SIZEOF_kostka1 = ($ - kostka1)
      dd_SIZEOF_kostka1 dd ($ - kostka1)
 
      tmp TEXTEQU %_SIZEOF_kostka1
      % echo _SIZEOF_kostka1 = tmp
 
    .code
; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
start:
; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
    print ustr$(dd_SIZEOF_kostka1),13,10
    mov   eax, input(13,10,"Press enter to exit...")
    exit
; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
end start


如果是单纯的数据的话下面的代码也是一样的:

1
2
3
4
5
6
array db 030h, 031h, 032h, 033h, 034h, 035h, 036h, 037h, 038h, 039h
      db 030h, 031h, 032h, 033h, 034h, 035h, 036h, 037h, 038h, 039h
      db 030h, 031h, 032h, 033h, 034h, 035h, 036h, 037h, 038h, 039h
      db 030h, 031h, 032h, 033h, 034h, 035h, 036h, 037h, 038h, 039h
      db 030h, 031h, 032h, 033h, 034h, 035h, 036h, 037h, 038h, 039h
array_len EQU $ - OFFSET array

如果是数组可以用下面的方式:

1
2
3
4
5
6
7
8
9
10
11
12
 pic1 byte 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
      byte 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
      byte 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
      byte 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
      byte 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
      byte 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
      byte 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
      byte 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
      byte 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
      byte 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
SIZEOFpic1 EQU $-pic1
pic2 byte 10*10 dup(1)

You may also like

发表评论

电子邮件地址不会被公开。 必填项已用*标注