User Name Password Register
DaniWeb IT Discussion Community
All
What is DaniWeb IT Discussion Community?
You're currently browsing the Assembly section within the Software Development category of DaniWeb, a massive community of 403,298 software developers, web developers, Internet marketers, and tech gurus who are all enthusiastic about making contacts, networking, and learning from each other. In fact, there are 3,857 IT professionals currently interacting right now! Registration is free, only takes a minute and lets you enjoy all of the interactive features of the site.
Please support our Assembly advertiser: Programming Forums
Views: 940 | Replies: 10
Reply
Join Date: Apr 2008
Posts: 31
Reputation: Spagett912 is an unknown quantity at this point 
Rep Power: 1
Solved Threads: 0
Spagett912's Avatar
Spagett912 Spagett912 is offline Offline
Light Poster

C++ Multiplication in Assembly

  #1  
May 8th, 2008
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;
AddThis Social Bookmark Button
Reply With Quote  
Join Date: Dec 2005
Posts: 3,411
Reputation: Salem has much to be proud of Salem has much to be proud of Salem has much to be proud of Salem has much to be proud of Salem has much to be proud of Salem has much to be proud of Salem has much to be proud of Salem has much to be proud of Salem has much to be proud of 
Rep Power: 21
Solved Threads: 389
Colleague
Salem's Avatar
Salem Salem is offline Offline
void main'ers are DOOMed

Re: C++ Multiplication in Assembly

  #2  
May 9th, 2008
Is there anything wrong with the output of
g++ -S prog.cpp
Use it as a guide for your own attempt.
If you dance barefoot on the broken glass of undefined behaviour, you've got to expect the occasional cut.
Do not PM me for help; You'll be ignored, or told to learn to read.
Do not ask me if I'm muslim - I'm not. Nor do I care about yours or anyone else's mysticism. Religion is a matrix, take the RED PILL.
Reply With Quote  
Join Date: May 2008
Posts: 11
Reputation: kermitaner is an unknown quantity at this point 
Rep Power: 1
Solved Threads: 1
kermitaner kermitaner is offline Offline
Newbie Poster

Re: C++ Multiplication in Assembly

  #3  
May 9th, 2008
  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 ....
Reply With Quote  
Join Date: Apr 2008
Posts: 31
Reputation: Spagett912 is an unknown quantity at this point 
Rep Power: 1
Solved Threads: 0
Spagett912's Avatar
Spagett912 Spagett912 is offline Offline
Light Poster

Re: C++ Multiplication in Assembly

  #4  
May 9th, 2008
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.
Reply With Quote  
Join Date: Dec 2005
Posts: 3,411
Reputation: Salem has much to be proud of Salem has much to be proud of Salem has much to be proud of Salem has much to be proud of Salem has much to be proud of Salem has much to be proud of Salem has much to be proud of Salem has much to be proud of Salem has much to be proud of 
Rep Power: 21
Solved Threads: 389
Colleague
Salem's Avatar
Salem Salem is offline Offline
void main'ers are DOOMed

Re: C++ Multiplication in Assembly

  #5  
May 9th, 2008
> 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.
If you dance barefoot on the broken glass of undefined behaviour, you've got to expect the occasional cut.
Do not PM me for help; You'll be ignored, or told to learn to read.
Do not ask me if I'm muslim - I'm not. Nor do I care about yours or anyone else's mysticism. Religion is a matrix, take the RED PILL.
Reply With Quote  
Join Date: Apr 2008
Posts: 31
Reputation: Spagett912 is an unknown quantity at this point 
Rep Power: 1
Solved Threads: 0
Spagett912's Avatar
Spagett912 Spagett912 is offline Offline
Light Poster

Re: C++ Multiplication in Assembly

  #6  
May 10th, 2008
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.
Last edited by Spagett912 : May 10th, 2008 at 2:19 pm.
Reply With Quote  
Join Date: Apr 2008
Posts: 31
Reputation: Spagett912 is an unknown quantity at this point 
Rep Power: 1
Solved Threads: 0
Spagett912's Avatar
Spagett912 Spagett912 is offline Offline
Light Poster

Re: C++ Multiplication in Assembly

  #7  
May 10th, 2008
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
Reply With Quote  
Join Date: May 2008
Posts: 11
Reputation: kermitaner is an unknown quantity at this point 
Rep Power: 1
Solved Threads: 1
kermitaner kermitaner is offline Offline
Newbie Poster

Re: C++ Multiplication in Assembly

  #8  
May 10th, 2008
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
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...
Reply With Quote  
Join Date: Apr 2008
Posts: 31
Reputation: Spagett912 is an unknown quantity at this point 
Rep Power: 1
Solved Threads: 0
Spagett912's Avatar
Spagett912 Spagett912 is offline Offline
Light Poster

Re: C++ Multiplication in Assembly

  #9  
May 10th, 2008
Is there some other way to output information other than using the "Print" command?
Reply With Quote  
Join Date: May 2008
Posts: 11
Reputation: kermitaner is an unknown quantity at this point 
Rep Power: 1
Solved Threads: 1
kermitaner kermitaner is offline Offline
Newbie Poster

Re: C++ Multiplication in Assembly

  #10  
May 11th, 2008
u can try:
invoke crt_printf,addr msg
or with the irvine libs:
;lea edx,msg
;call Writestring
Reply With Quote  
Reply

Only community members can participate in forum threads. You must register or log in to contribute.

DaniWeb Assembly Marketplace
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)

 

Thread Tools Display Modes

Similar Threads
Other Threads in the Assembly Forum

All times are GMT -4. The time now is 7:02 am.
Forum system based on vBulletin Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
©2003 - 2008 DaniWeb® LLC