DaniWeb IT Discussion Community

DaniWeb IT Discussion Community (http://www.daniweb.com/forums/)
-   Assembly (http://www.daniweb.com/forums/forum125.html)
-   -   C++ Multiplication in Assembly (http://www.daniweb.com/forums/thread123283.html)

Spagett912 May 8th, 2008 9:35 pm
C++ Multiplication in Assembly
 
I'm trying to translate the following code from C++ into Asembly language but am having trouble. I know that I have to make a cmp and one or more jmp. If any1 has sugguestions or tips thats great. Here's the C++ coding:

int x = 1 * 2;
    int y = 3 * 4;

    cout << "x = " << x << endl;
    cout << "y = " << y << endl;

    if (x == y)
        cout << "x and y are the same." << endl;
    else
        cout << "x and y are not the same." << endl;

   
    return 0;

Salem May 9th, 2008 12:36 am
Re: C++ Multiplication in Assembly
 
Is there anything wrong with the output of
g++ -S prog.cpp

Use it as a guide for your own attempt.

kermitaner May 9th, 2008 6:01 am
Re: C++ Multiplication in Assembly
 
  1. include /masm32/include/masm32rt.inc
  2. ;compile with masm32 console link & compile
  3. .data
  4.         x dd 1*2
  5.         y dd 3*4
  6. .code
  7. start:
  8.   print "x="
  9.   print str$(x),13,10
  10.   print "y="
  11.   print str$(y),13,10
  12.   invoke cmpmem,addr x,addr y,sizeof x
  13.   .if (eax!=0)
  14.           print "equal",13,10
  15.   .else
  16.           print "not  equal",13,10
  17.   .endif
  18.   exit
  19. end start

probably not what u expected ;-) but using a HL Macro Assembler, the difference to other languages ( c) is not so big as one would assume ....

Spagett912 May 9th, 2008 10:44 am
Re: C++ Multiplication in Assembly
 
Ummm, yeah that isn't really what I expected lol since I'm using the Kip Irvine files. Btw sorry I think I forgot to mention we can't use .IF statements lol.

Salem May 9th, 2008 1:23 pm
Re: C++ Multiplication in Assembly
 
> I'm using the Kip Irvine files.
And now you're only telling us this?

> I forgot to mention we can't use .IF statements lol.
More restrictions on the solution, is there anything else you should be telling us?

Post YOUR attempt.

Spagett912 May 10th, 2008 2:06 pm
Re: C++ Multiplication in Assembly
 
Wow i'm really sorry about all that. I was looking at a different program that I wasn't allowed to use .IF statements. So thanks for the help I'll check out what u gave me now.

Spagett912 May 10th, 2008 2:45 pm
Re: C++ Multiplication in Assembly
 
Ok now the only problems i'm getting is that cmpmem is an undefined symbol and print is undefined as well. Finally i have this error unmatched block nesting : main

kermitaner May 10th, 2008 5:06 pm
Re: C++ Multiplication in Assembly
 
my code is for the original masm32 package, u can find some download links here
http://www.masm32.com/masmdl.htm
make sure to install in top level of ur drive, otherwise the standard include paths won't work.

there are two files: build.bat and buildc.bat in the /bin directory, the later is the correct one for console apps.

the print macro is a very useful macro, located in include file: /macros/macros.asm, see description in
help file: /help/hlhelp.hlp - Console Mode Macros - print

the cmpmem is a routine located in /include/masm32.inc and the corresponding library is
/lib/masm32.lib ,
see description in /help/masmlib.hlp - Memory Functions - cmpmem
( both functions/macros are available through the
Quote:

include /masm32/include/masm32rt.inc
line only )


it might be a good idea to check some step by step assembly tutorials first, before getting too deep into some programming tasks to early.
though i don't think that assembler is much more difficult than other programming languages, it sure is different and the learning curve in the beginning takes more time than with other languages.
its better to spend more time with the basics in the beginning, than wasting too much time with error fixing when u take the second step before the first...

Spagett912 May 10th, 2008 7:57 pm
Re: C++ Multiplication in Assembly
 
Is there some other way to output information other than using the "Print" command?

kermitaner May 11th, 2008 4:53 am
Re: C++ Multiplication in Assembly
 
u can try:
invoke crt_printf,addr msg
or with the irvine libs:
;lea edx,msg
;call Writestring


All times are GMT -4. The time now is 5:43 am.

Forum system based on vBulletin Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
©2003 - 2008 DaniWeb® LLC