MASM – error A2042: statement too complex

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

; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
    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


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

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  

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

 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)
☆版权☆

* 网站名称:obaby@mars
* 网址:https://oba.by/
* 个性:https://oba.by/
* 本文标题: 《MASM – error A2042: statement too complex》
* 本文链接:https://www.oba.by/2011/09/3150
* 短链接:https://oba.by/?p=3150
* 转载文章请标明文章来源,原文标题以及原文链接。请遵从 《署名-非商业性使用-相同方式共享 2.5 中国大陆 (CC BY-NC-SA 2.5 CN) 》许可协议。


You may also like

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注