C ++内联汇编PROC ENDP错误

时间:2018-02-26 13:22:36

标签: c++ assembly x86

我正在尝试在C ++程序中的程序集x86中创建过程。我的代码是:

#include <stdio.h>
#include <stdlib.h>
int main(void){

   _asm{

  input1 PROC
            push inputnumber
            lea eax, inputmsg
            push eax
            call printf
            add esp, 8


            push ebx
            lea eax, format
            push eax
            call scanf
            add esp, 8  

            jmp check1
            ret
        input1 ENDP
}
}

但是,当我尝试使用Visual Studio编译程序时,我收到以下错误:

C2400 inline assembler syntax error in 'opcode'; found 'PROC'
C2400 inline assembler syntax error in 'opcode'; found 'ENDP' 

我在线阅读但无法解决。有任何建议如何修复它?

1 个答案:

答案 0 :(得分:2)

感到惊讶的是,这些是你得到的唯一错误。 C内联汇编程序无法识别PROC和ENDP。无论如何,在C中定义函数内部的函数并不是一个好主意。尝试

int main(){
   _asm{
        push inputnumber
        lea eax, inputmsg
        :
        call scanf
        add esp, 8  

        ret
    }
}

如果您正在使用其中一个MS编译器,那么您最终会得到一大堆未声明的变量以及有关scanf的警告。