J Doe
J Doe

Reputation: 1

C++ inline assembly PROC ENDP error

I am trying to create procedure in assembly x86 inside a C++ program. My code is:

#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
}
}

However, when I try to compile the program with Visual studio I get the following error:

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

I've read online but I cannot resolve it. Any suggestions how to fix it ?

Upvotes: 0

Views: 533

Answers (1)

cup
cup

Reputation: 8257

Surprised that those are the only errors you get. PROC and ENDP are not recognized by the C inline assembler. Anyway, defining a function inside a function in C isn't a good idea. Try

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

        ret
    }
}

You will then end up with a whole bunch of undeclared variables and possibly warnings about scanf if you're using one of the MS compilers.

Upvotes: 2

Related Questions