Assembly 头文件中的汇编代码中存在语法错误
我在大学里学习汇编代码。我对任何类型的汇编编程都是新手。我不明白为什么我在尝试构建时会出现错误。IDE是Visual Studio 2012。错误来自io.h头文件。我直接从书中复制了汇编指令,所以我假设它是作者想要的,并且包含了我需要的所有内容Assembly 头文件中的汇编代码中存在语法错误,assembly,Assembly,我在大学里学习汇编代码。我对任何类型的汇编编程都是新手。我不明白为什么我在尝试构建时会出现错误。IDE是Visual Studio 2012。错误来自io.h头文件。我直接从书中复制了汇编指令,所以我假设它是作者想要的,并且包含了我需要的所有内容 ; Assembler directives .586 ;accept instrucions for 586 .MODEL FLAT ;generate code for flat memory
; 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
看看这是不是你的问题。。。
在文本编辑器中打开文件io.h
查看第1行,因为汇编器已经标记了它
从外观上看,我的猜测是第1行开始一个C风格的注释,这很有意义
如果确实如此,那么你已经发现了你的问题
建议修复
自行编译io.h;但不要把它联系起来
添加所需函数的名称,因为Extern指令使用特定汇编程序想要的语法;看来您正在使用Masm,这是一个不错的选择
汇编,但不要单独链接汇编语言文件
现在两个文件都是OBJ格式,将它们链接在一起
很明显,你真的很想学习这些东西,在我看来,像你这样的态度在这里是受欢迎的
我应该在三四个小时后回来。这里的其他人比我聪明得多,他们应该有更好的帮助和答案,所以让我们知道你从哪里得到了这些
哦,老手给新生的提示:一旦你解决了这个问题,就要提前做好准备,迎接另一个烦恼。当它出现时,不要气馁。这就是组装的方式。相信我,你会明白的。我已经可以通过你评论代码和提出问题的方式判断出来。我做了一些研究,似乎io.h也是一些旧版本MASM附带的程序集包含文件。现代版本的VisualStudio使用的那个似乎没有使用它们。如果您打算在汇编中进行输入/输出,ypu可能必须找到其他方法。我不知道汇编程序本身是否提供了任何替换,但是如果您不想依赖任何其他库,您可以直接使用
如果对你来说太多了,你应该对一些额外的软件包感兴趣,比如-你可能会对它感兴趣。Hmmm。。。。您正在尝试将C头包含到程序集文件中吗?这是不可能工作的…io.h是框架中包含的头文件。它为宏输入atod等提供了代码。我应该问一下为什么它试图包含c io头文件?h通常是为c头文件保留的。汇编程序可以使用.inc等。你最好将其重命名。但是如果不可能的话,可以使用include目录列表。正如其他人所指出的,io.h很可能用于C程序,而不是汇编程序。快速查看文件内部,您应该会发现这一点,因为您只要看一下就可以知道。程序集包含文件通常以.inc结尾。