错误A2013:.MODEL必须在此指令之前

时间:2013-07-07 22:56:00

标签: visual-studio assembly masm irvine32

稍微修改一下MASM,我不知道这些错误意味着什么,或者我是否正确编写了这段代码。正如它目前所写,它应该只是问候用户,要求两个数字并说再见(试图在进行任何计算或任何特殊事项之前使骨架工作)。

INCLUDELIB Irvine32.inc ;  Note: line number 7


.data
userName    BYTE    33 DUP(0)   ;string to be entered by user
firstNumber DWORD   ?           ;integer to be entered by user
secondNumber    DWORD     ?         ;integer to be entered by user
intro_1     BYTE        "Elementary Arithmetic by Marshall Todt", 0
intro_2     BYTE        "Enter 2 numbers, and I'll show you the sum, difference,", 0
intro_3     BYTE        "product, quotient, and remainder.", 0
prompt_1        BYTE        "Enter the first integer: ", 0
prompt_2        BYTE        "Enter the second integer: ",0
goodBye     BYTE        "Impressed?  Bye!", 0

.code
main PROC

;Introduction
    mov     edx, OFFSET intro_1 
    call    WriteString
    call    CrLf
    move        edx, OFFSET intro_2
    call WriteString
    call CrLF
    move        edx, OFFSET intro_3
    call WriteString
    call CrLF

;Get the data
    mov     edx, OFFSET prompt_1
    call    WriteString
    call    ReadInt
    mov     firstNumber, eax
    mov     edx, OFFSET prompt_2
    call    WriteString
    call    ReadInt
    mov     secondNumber, eax



;Say "Good-bye"
    mov     edx, OFFSET goodBye
    call    WriteString
    call    CrLf
    exit    ; exit to operating system
main ENDP

END main

这些是我得到的错误:

Error   1   error A2013: .MODEL must precede this directive c:\Users\Marshall\documents\visual studio 2010\Projects\Solution1\Assignment1\Assignment1.asm   10  1   Assignment1
Error   2   error A2034: must be in segment block   c:\Users\Marshall\documents\visual studio 2010\Projects\Solution1\Assignment1\Assignment1.asm   11  1   Assignment1
Error   3   error A2034: must be in segment block   c:\Users\Marshall\documents\visual studio 2010\Projects\Solution1\Assignment1\Assignment1.asm   12  1   Assignment1
Error   4   error A2034: must be in segment block   c:\Users\Marshall\documents\visual studio 2010\Projects\Solution1\Assignment1\Assignment1.asm   13  1   Assignment1
Error   5   error A2034: must be in segment block   c:\Users\Marshall\documents\visual studio 2010\Projects\Solution1\Assignment1\Assignment1.asm   14  1   Assignment1
Error   6   error A2034: must be in segment block   c:\Users\Marshall\documents\visual studio 2010\Projects\Solution1\Assignment1\Assignment1.asm   15  1   Assignment1
Error   7   error A2034: must be in segment block   c:\Users\Marshall\documents\visual studio 2010\Projects\Solution1\Assignment1\Assignment1.asm   16  1   Assignment1
Error   8   error A2034: must be in segment block   c:\Users\Marshall\documents\visual studio 2010\Projects\Solution1\Assignment1\Assignment1.asm   17  1   Assignment1
Error   9   error A2034: must be in segment block   c:\Users\Marshall\documents\visual studio 2010\Projects\Solution1\Assignment1\Assignment1.asm   18  1   Assignment1
Error   10  error A2034: must be in segment block   c:\Users\Marshall\documents\visual studio 2010\Projects\Solution1\Assignment1\Assignment1.asm   19  1   Assignment1
Error   11  error A2013: .MODEL must precede this directive c:\Users\Marshall\documents\visual studio 2010\Projects\Solution1\Assignment1\Assignment1.asm   21  1   Assignment1
Error   12  error A2034: must be in segment block : main    c:\Users\Marshall\documents\visual studio 2010\Projects\Solution1\Assignment1\Assignment1.asm   22  1   Assignment1
Error   13  error A2034: must be in segment block   c:\Users\Marshall\documents\visual studio 2010\Projects\Solution1\Assignment1\Assignment1.asm   25  1   Assignment1
Error   14  error A2034: must be in segment block   c:\Users\Marshall\documents\visual studio 2010\Projects\Solution1\Assignment1\Assignment1.asm   26  1   Assignment1
Error   15  error A2034: must be in segment block   c:\Users\Marshall\documents\visual studio 2010\Projects\Solution1\Assignment1\Assignment1.asm   27  1   Assignment1
Error   16  error A2008: syntax error : edx c:\Users\Marshall\documents\visual studio 2010\Projects\Solution1\Assignment1\Assignment1.asm   28  1   Assignment1
Error   17  error A2034: must be in segment block   c:\Users\Marshall\documents\visual studio 2010\Projects\Solution1\Assignment1\Assignment1.asm   29  1   Assignment1
Error   18  error A2034: must be in segment block   c:\Users\Marshall\documents\visual studio 2010\Projects\Solution1\Assignment1\Assignment1.asm   30  1   Assignment1
Error   19  error A2008: syntax error : edx c:\Users\Marshall\documents\visual studio 2010\Projects\Solution1\Assignment1\Assignment1.asm   31  1   Assignment1
Error   20  error A2034: must be in segment block   c:\Users\Marshall\documents\visual studio 2010\Projects\Solution1\Assignment1\Assignment1.asm   32  1   Assignment1
Error   21  error A2034: must be in segment block   c:\Users\Marshall\documents\visual studio 2010\Projects\Solution1\Assignment1\Assignment1.asm   33  1   Assignment1
Error   22  error A2034: must be in segment block   c:\Users\Marshall\documents\visual studio 2010\Projects\Solution1\Assignment1\Assignment1.asm   36  1   Assignment1
Error   23  error A2034: must be in segment block   c:\Users\Marshall\documents\visual studio 2010\Projects\Solution1\Assignment1\Assignment1.asm   37  1   Assignment1
Error   24  error A2034: must be in segment block   c:\Users\Marshall\documents\visual studio 2010\Projects\Solution1\Assignment1\Assignment1.asm   38  1   Assignment1
Error   25  error A2034: must be in segment block   c:\Users\Marshall\documents\visual studio 2010\Projects\Solution1\Assignment1\Assignment1.asm   39  1   Assignment1
Error   26  error A2034: must be in segment block   c:\Users\Marshall\documents\visual studio 2010\Projects\Solution1\Assignment1\Assignment1.asm   40  1   Assignment1
Error   27  error A2034: must be in segment block   c:\Users\Marshall\documents\visual studio 2010\Projects\Solution1\Assignment1\Assignment1.asm   41  1   Assignment1
Error   28  error A2034: must be in segment block   c:\Users\Marshall\documents\visual studio 2010\Projects\Solution1\Assignment1\Assignment1.asm   42  1   Assignment1
Error   29  error A2034: must be in segment block   c:\Users\Marshall\documents\visual studio 2010\Projects\Solution1\Assignment1\Assignment1.asm   43  1   Assignment1
Error   30  error A2034: must be in segment block   c:\Users\Marshall\documents\visual studio 2010\Projects\Solution1\Assignment1\Assignment1.asm   48  1   Assignment1
Error   31  error A2034: must be in segment block   c:\Users\Marshall\documents\visual studio 2010\Projects\Solution1\Assignment1\Assignment1.asm   49  1   Assignment1
Error   32  error A2034: must be in segment block   c:\Users\Marshall\documents\visual studio 2010\Projects\Solution1\Assignment1\Assignment1.asm   50  1   Assignment1
Error   33  error A2008: syntax error : exit    c:\Users\Marshall\documents\visual studio 2010\Projects\Solution1\Assignment1\Assignment1.asm   51  1   Assignment1
Error   34  error A1010: unmatched block nesting : main c:\Users\Marshall\documents\visual studio 2010\Projects\Solution1\Assignment1\Assignment1.asm   52  1   Assignment1
Error   35  error MSB3721: The command "ml.exe /c /nologo /Zi /Fo"Debug\Assignment1.obj" /W3 /errorReport:prompt  /TaAssignment1.asm" exited with code 1.   C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\BuildCustomizations\masm.targets  49  6   Assignment1

2 个答案:

答案 0 :(得分:3)

您需要在代码的开头.model flat - 在此之前可能还需要.486。我认为可以解决几乎所有问题。

答案 1 :(得分:-2)

如果您使用x64作为平台而不是x86,也可以避免这种情况。当您在代码中使用64位x寄存器时,也许您正在为x64进行编码!!!