Visual studio 2010 无法编译此程序集代码

Visual studio 2010 无法编译此程序集代码,visual-studio-2010,assembly,masm,coff,Visual Studio 2010,Assembly,Masm,Coff,我已经开始学习汇编,并尝试在VisualStudio2010上编译以下代码 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, DSE

我已经开始学习汇编,并尝试在VisualStudio2010上编译以下代码

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 我在网上搜索了一个解决方案,唯一发现的是发生了错误A2004,因为/coff指令

如何从参数列表中删除/coff?(如果这是导致此错误的原因)


谢谢,

Ido Sorozon

如果你正在学习汇编语言基础知识,你应该尝试一下:这是一个专门用于汇编学习的工具,它有一个Masm兼容的汇编程序,支持宏(也支持fasm语法)和一个带有DOS屏幕模拟的8086 cpu模拟器来测试/调试你的工作

它使生产16位COM程序、老式EXE甚至引导扇区成为可能


您在问题中展示的示例程序在使用该工具组装时没有问题。

您在这里非常困惑。您的程序集是实模式、16位程序集,即MS-DOS时代使用的那种。Visual Studio 2010是Windows编译器,不再支持生成DOS可执行文件。请问你在找什么?你有没有偶然捡到一本关于组装的书,这本书是在1980年代末写的(那时组装更为相关)?这是我需要学习的组装知识。所以我想我会得到一个DOS编译器。你有什么建议吗?见@Seki的答案。如果你必须做16位实模式汇编,我必须问你的教授是怎么想的,如果事实上是这样,你需要在你的系统上安装DOS——祝你好运,我希望你不想把它用于其他任何事情——或者b)使用模拟器或虚拟机。为什么要投否决票?对于一个2014年的学生来说,如果没有人告诉他16位汇编代码是一种来自二十世纪的编码风格,那么他问为什么20年前的16位汇编代码不能用当前的工具进行编译,我觉得这是可以接受的:)至少,请解释一下什么质量是无用的。
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.