Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 头文件中的汇编代码中存在语法错误_Assembly - Fatal编程技术网

Assembly 头文件中的汇编代码中存在语法错误

Assembly 头文件中的汇编代码中存在语法错误,assembly,Assembly,我在大学里学习汇编代码。我对任何类型的汇编编程都是新手。我不明白为什么我在尝试构建时会出现错误。IDE是Visual Studio 2012。错误来自io.h头文件。我直接从书中复制了汇编指令,所以我假设它是作者想要的,并且包含了我需要的所有内容 ; Assembler directives .586 ;accept instrucions for 586 .MODEL FLAT ;generate code for flat memory

我在大学里学习汇编代码。我对任何类型的汇编编程都是新手。我不明白为什么我在尝试构建时会出现错误。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
看看这是不是你的问题。。。 在文本编辑器中打开文件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结尾。