文件中的无效字符

时间:2021-07-20 13:52:11

标签: assembly x86 masm

我使用的是 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 ==========

1 个答案:

答案 0 :(得分:1)

<块引用>

还有什么我可以做的吗?

如果您不坚持使用没有所有库的工具链,您可以尝试使用不同的工具链。
我将您的示例从 MASM 转换为 €ASM,它对宏 outputinputatoddtoa 使用不同的名称,但它们具有相似的功能并且也是可在 winapi.htmcpuext32.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