我使用的是 Visual Studio 2019 免费版。我创建了一个空白项目,然后添加了 .masm(.targets, .props) 的依赖项。但是,我收到一个错误,不确定是我的 Visual Studio 设置还是其他原因。
我正在学习汇编程序类,需要修改我们书中的一个示例以执行更多操作,但首先我希望原始代码能够工作。因此,我输入了书中的代码,但收到了大量关于 io.h 的错误,我不知道该怎么办。我希望有人能指出我做错了什么。我在 Google 上找到了一篇文章解决了这个问题,但没有解决问题,io.h 中的另一篇建议的 C++ 注释是问题所在,但我似乎无法删除它们并将文件保存回去。
这是我的代码:
.586
.MODEL FLAT
INCLUDE io.h ; header file for input/output
.STACK 4096
.DATA
number1 DWORD ?
number2 DWORD ?
prompt1 BYTE "Enter First Number", 0
prompt2 BYTE "Enter Second Number", 0
string BYTE 40 DUP (?)
resultLb1 BYTE "The Sum Is", 0
sum BYTE 11 DUP (?), 0
.CODE
_MainProc PROC
input prompt1, string, 40 ; read ASCII Characters
atod string ; convert to integer
mov number1, eax ; store in memory
input prompt2, string, 40
atod string
mov number2, eax
mov eax, number1
add eax, number2
dtoa sum, eax
output resultLb1, sum
mov eax, 0
ret
_MainProc ENDP
END ; end of source code
错误:
Build started...
1>------ Build started: Project: CYBR215, Configuration: Debug Win32 ------
1>Assembling Week_4_Code.asm...
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(1): error A2008: syntax error : /
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(2): error A2008: syntax error : /
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(3): error A2008: syntax error : /
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(4): error A2008: syntax error : /
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(5): error A2008: syntax error : /
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(6): error A2008: syntax error : /
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(7): error A2008: syntax error : /
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(8): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(9): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(10): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(11): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(12): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(13): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(14): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(15): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(16): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(17): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(18): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(19): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(20): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(21): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(22): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(23): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(24): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(25): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(26): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(27): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(28): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(29): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(30): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(31): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(32): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(33): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(34): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(35): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(36): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(37): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(38): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(39): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(40): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(41): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(42): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(43): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(44): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(45): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(46): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(47): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(48): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(49): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(50): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(51): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(52): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(53): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(54): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(55): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(56): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(57): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(58): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(59): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(60): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(61): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(62): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(63): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(64): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(65): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(66): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(67): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(68): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(69): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(70): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(71): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(72): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(73): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(74): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(75): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(76): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(77): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(78): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(79): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(80): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(81): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(82): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(83): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(84): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(85): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(86): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(87): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(88): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(89): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(90): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(91): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(92): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(93): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(94): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(95): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(96): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(97): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(98): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(99): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(100): error A2044: invalid character in file
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\io.h(101): fatal error A1012: error count exceeds 100; stopping assembly
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\BuildCustomizations\masm.targets(70,5): error MSB3721: The command "ml.exe /c /nologo /Zi /Fo"Debug\Week_4_Code.obj" /W3 /errorReport:prompt /TaWeek_4_Code.asm" exited with code 1.
1>Done building project "CYBR215.vcxproj" -- FAILED.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
答案 0 :(得分:1)
还有什么我可以做的吗?
如果您不坚持使用没有所有库的工具链,您可以尝试使用不同的工具链。
我将您的示例从 MASM 转换为 €ASM,它对宏 output
、input
、atod
、dtoa
使用不同的名称,但它们具有相似的功能并且也是可在 winapi.htm、cpuext32.htm
EUROASM CPU=586
CYBR215 PROGRAM FORMAT=PE,WIDTH=32,MODEL=FLAT,ENTRY=_MainProc
INCLUDE winapi.htm,cpuext32.htm ; Macroinstruction libraries.
[DATA] SEGMENT
number1 DD 0
number2 DD 0
prompt1 DB "Enter First Number ", 0
prompt2 DB "Enter Second Number ", 0
string DB 40*BYTE 0
resultLb1 DB "The Sum Is ", 0
sum DB 12*BYTE 0
[CODE] SEGMENT
_MainProc PROC
StdOutput prompt1
StdInput string, Size=40 ; read ASCII Characters
LodD string ; convert to integer
mov [number1], eax ; store in memory
StdOutput prompt2
StdInput string, Size=40
LodD string ; Load decimal number to EAX as binary.
mov [number2], eax
mov eax, [number1]
add eax, [number2]
StoD sum ; Store EAX as decimal number to `sum`.
StdOutput resultLb1, sum
TerminateProgram Errorlevel=0
ENDP _MainProc
ENDPROGRAM CYBR215
可执行文件可以从以前的来源制作
euroasm.exe CYBR215.asm