我正在尝试在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'
我在线阅读但无法解决。有任何建议如何修复它?
答案 0 :(得分:2)
感到惊讶的是,这些是你得到的唯一错误。 C内联汇编程序无法识别PROC和ENDP。无论如何,在C中定义函数内部的函数并不是一个好主意。尝试
int main(){
_asm{
push inputnumber
lea eax, inputmsg
:
call scanf
add esp, 8
ret
}
}
如果您正在使用其中一个MS编译器,那么您最终会得到一大堆未声明的变量以及有关scanf的警告。