【发布时间】:2014-10-03 09:06:12
【问题描述】:
我正在我的大学学习汇编代码。我对任何类型的汇编编程都不熟悉。我不明白为什么在尝试构建时会出现错误。 IDE 是 Visual Studio 2012。错误来自 io.h 头文件。我直接从书中复制了汇编程序指令,所以我认为这是作者想要的,并包含了我需要的一切。
; Assembler directives
.586 ;accept instrucions for 586
.MODEL FLAT ;generate code for flat memory
INCLUDE io.h ;header file for input/output
.STACK 4096 ;reserve 4096-byte stack
.DATA ;reserve storage for data
x DWORD ?
y DWORD ?
z DWORD ?
result DWORD ?
prompt1 BYTE "Enter the value for x",0
prompt2 BYTE "Enter the value for y",0
prompt3 BYTE "Enter the value for z",0
asciiIn BYTE 15 DUP (?)
msgLabel BYTE "The result is",0
msgText BYTE 11 DUP (?),0
.CODE ;start of main program code
_MainProc PROC
;read ASCII input for first number, convert to 2's comp, and
input prompt1, asciiIn, 15
atod asciiIn
mov x, eax
;read ASCII input for second number, convert to 2's comp, an
input prompt2, asciiIn, 15
atod asciiIn
mov y, eax
;read ASCII input for third number, convert to 2's comp, and
input prompt3, asciiIn, 15
atod asciiIn
mov z, eax
;perform the requested calculations
mov eax, x
add eax, x
add eax, x
add eax, x
add eax, y
add eax, y
sub eax, z
sub eax, z
inc eax
neg eax
;store the result in memory, convert from 2's comp to ASCII,
mov result, eax
dtoa msgText, result
output msgLabel, msgtext
mov eax, 0
ret
_MainProc ENDP
END
这些是我在尝试构建时收到的错误消息。
1>------ Build started: Project: windows32, Configuration: Debug Win32 ------
1> Assembling ..\..\main.asm...
1>E:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\io.h(1): error A2008: syntax error : /
1>E:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\io.h(2): error A2008: syntax error : io
1>E:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\io.h(3): error A2008: syntax error : *
1>E:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\io.h(4): error A2008: syntax error : Copyright
1>E:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\io.h(5): error A2008: syntax error : *
1>E:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\io.h(6): error A2008: syntax error : *
1>E:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\io.h(7): error A2008: syntax error : *
1>E:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\io.h(8): error A2008: syntax error : file
1>E:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\io.h(9): error A2008: syntax error : *
1>E:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\io.h(10): error A2008: syntax er ror : *
1>E:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\io.h(11): error A2008: syntax error : *
1>E:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\io.h(12): error A2008: syntax error : *
1>E:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\io.h(14): error A2044: invalid character in file
1>E:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\io.h(15): error A2044: invalid character in file
1>E:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\io.h(16): error A2044: invalid character in file
1>E:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\io.h(17): error A2044: invalid character in file
【问题讨论】:
-
Hmmm.... 您是否尝试将 C 标头包含到程序集文件中?这没有机会工作......
-
io.h 是框架中包含的头文件。它为宏输入 atod 等提供代码。我应该问为什么它试图包含 c io 头文件?
-
.h通常为 C 头文件保留。汇编者可以使用.inc等。你最好重命名它。但如果不可能,请使用包含目录列表。 -
正如其他人所指出的,
io.h很可能用于 C 程序,而不是汇编程序。快速浏览一下您的文件应该会发现这一点,因为您应该能够知道只是盯着它看。程序集包含文件通常以.inc结尾。
标签: assembly