From: frolikcc AT indy DOT net (Chris Frolik) Newsgroups: comp.os.msdos.djgpp Subject: in-line __asm__ Date: 7 Jul 1997 03:08:33 GMT Organization: IndyNet - Indys Internet Gateway Lines: 50 Message-ID: <5ppmjh$onp$1@news.indy.net> NNTP-Posting-Host: ip72-83.ts.indy.net To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Precedence: bulk I am starting to learn assembly language, and I am already pretty familiar with C and C++. I would like to try some in-line assembly code in DJGPP, but I am not quite sure how. I tried the following C program: /* BEGIN program */ #include int multiply(char); /* function prototype */ int main() { char x=5; int result; result = multiply(x); printf("\nThe result of the multiplication is %d\n", result); return 0; } int multiply(char c) { short int r; /* Assembly routine to multiply c by 2: */ __asm__ (" movb $2,%ax imulb c movw %ax,r "); return (int)r; } /* END program */ I just wrote this to see if I could get inline assembly routines to work with DJGPP. When I compile, it tells me that 'c' and 'r' are undefined. I am assuming it means they are undefined within the assembly code. I read the FAQ on this, and then the text info docs that it pointed me to. I didn't understand the method it tells me to use, and I want to use the standard ANSI C inline assembly method, like in Pascal. So, my question is how do I pass variables to assembly routines in this method? I apologize if my assembly code is incorrect since I am still trying to learn the language. It is bad enough that my tutorial book covers Intel assembly, and DJGPP requires AT&T assembly. Thanks, -Chris