无法编译此汇编代码

时间:2014-02-19 21:12:50

标签: visual-studio-2010 assembly masm coff

我开始学习汇编并尝试在visual studio 2010上编译以下代码

DSEG SEGMENT
    A DW 8
    B DW 10
DSEG ENDS

SSEG SEGMENT STACK
    DW 100H DUP(?)
SSEG ENDS

CSEG SEGMENT
ASSUME CS:CSEG, DS:DSEG, SS:SSEG

MAIN PROC FAR
    PUSH DS
    MOV  AX, 0
    PUSH AX
    MOV  AX, DSEG
    MOV  DS, AX

    ; The start of the program

    MOV  AX, A
    MOV  BX, B
    ADD  AX, BX
    MOV  A, AX

    RET
MAIN ENDP

CSEG ENDS

END MAIN

我收到了以下错误:

1>main.asm(17): error A2004: symbol type conflict
1>main.asm(32): warning A4023: with /coff switch, leading underscore required for start address : MAIN
1>C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\BuildCustomizations\masm.targets(49,5): error MSB3721: The command "ml.exe /c /nologo /Zi /Fo"Debug\main.obj" /W3 /errorReport:prompt /coff  /Tamain.asm" exited with code 1.

我在网上搜索了一个搜索结果,我发现的唯一一件事就是错误A2004因为/ coff指令而发生。

如何从参数列表中删除/ coff? (如果这是将此错误归因于apeare)。


谢谢,
Ido Sorozon

1 个答案:

答案 0 :(得分:2)

如果您正在学习汇编语言基础知识,那么您应该尝试emu8086:它是一个专门用于汇编学习的工具,它具有支持宏的Masm兼容汇编程序(它还可以支持fasm语法)和一个8086 CPU模拟器与DOS屏幕模拟,以测试/调试您的工作。

它可以生成16位COM程序,老式EXE甚至引导扇区。

您在问题中显示的示例程序可以毫无问题地组装该工具。