我在大学学习汇编代码。我是任何类型汇编编程的新手。我不明白为什么我在尝试构建时遇到错误。 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
答案 0 :(得分:0)
io.h
io.h
;但不要链接Extern
指令(使用您所选择的汇编程序所需的任何语法;看来您使用的是Masm,这里选择不错)OBJ
格式,将它们链接在一起很明显,你真的想学习这些东西,就我而言,欢迎像你这样的态度。
我应该在3到4个小时后回来。这里的其他人比我更聪明,他们应该有更好的帮助和答案,所以让我们知道你从哪里得到。
哦,从老手那里为新生提示:一旦你解决了这个问题,请提前准备好迎接另一个烦恼。出现时不要气馁。这是集会的方式。相信我,你会得到它。我已经可以通过您对代码的评论方式和问题来说明。
答案 1 :(得分:0)
我做了一些研究,似乎io.h(也是)MASM的一些(较旧)版本附带的程序集包含文件。似乎现代版本的visual studio使用的那个不使用它们。如果你打算在汇编中进行输入/输出,ypu可能必须找到一些其他方法。我不知道汇编程序本身是否有任何替换,但如果您不想依赖任何其他库,则只需use WinAPI directly。
如果对你来说太过分了,你应该对irvine之类的其他软件包感兴趣 - 那么你可能对documentation感兴趣。