Solved

New to assembly and having trouble with doing some math

Posted on 2004-09-05
6
230 Views
Last Modified: 2006-11-17
Good evening, how are you doing? I am sorry to bother everyone, however I am new to programming in assembly and there seems to be to much magic going on in my text book I am reading. What I want to understand is if a user inputs lets say Width =2, Lenght =3, and Height=4 and I want to know what they entered in each indvidual one to do some math, such as multiplying adding and etc...... How would I do that in assembly. All the book keeps showing me is one input not more then one. Thanks
0
Comment
Question by:Corey_819
  • 4
  • 2
6 Comments
 
LVL 7

Expert Comment

by:aib_42
Comment Utility
First of all, the method reading user input would depend on the platform/environment you're running your assembly program on. For example, a program running on no operating system at all (ie an OS in itself) might use BIOS to access the keyboard (and the monitor) and get input and display it to the user. An assembly program using a CRT (C Runtime) Library might use the ever-popular printf and scanf functions. An assembly program running in Windows might display a textbox for the user to fill in, or hook the keyboard and monitor it for keypresses! Getting the numerical value of an input would depend on the environment as well.

Now for doing math, you have the best source reserved for you: The CPU! Before/while learning assembly, you should also learn about the CPU and how to use it. For example, if you knew how it worked, you would know that it does standard integer arithmetic using _registers_ as temporary storage and _instructions_ for... well, instructing what arithmetic operation to do :). Here is a very basic x86 assembly program:

mov ax, 0010
add ax, 0010

This would load '10' - whatever that means, for for some assemblers, it means 10 decimal and for others, it means 10 hexadecimal, which is 16 decimal, check your assembler documentation for syntax details - to the register ax with the first instruction. It would then add 10 (decimal or hexadecimal depending on how your assembler sees and encodes it) to it with the second instruction, and you would have ax equaling 20. (again, 20 or 32)

I don't have any links to any assembly tutorials handy, but go give google a try. Other experts might give you links as well.
0
 
LVL 1

Author Comment

by:Corey_819
Comment Utility
Thanks for the help aib_42. What I am trying to do is the user will run it from a dos window type the compiled exe and then enter the length, height, and widht. What I am confused is in assembly how do you know what values the user entered in the height, width, and length. I mean in c++ you would have variables. How would you do that in assembly. I understand the registers. I am just having a hard time understanding this first part. Thanks again.
0
 
LVL 7

Accepted Solution

by:
aib_42 earned 25 total points
Comment Utility
Well, depending on the functions you use, data may be stored on a fixed location in memory, it may be returned on some registers, or may be put on an arbitary location on memory whose address is returned in a register.

Take the malloc() call from the C Runtime Library, for example. Its mission is to allocate memory. It takes its one parameter from the stack, the size of memory to allocate, allocates that many amount of bytes, and returns the address of the allocated memory in eax (or 0 on failure).

Take scanf() for another example. With scanf(), you supply it the location(s) to store the user input. Before calling it, you push on the stack a pointer to a string which specifies WHAT you want it to read, along with memory locations of WHERE you want it to read them.

Again, INT 16h Func=00h returns the key the user pressed in AL as far as I can remember... It all depends on the function/interface being used, but common places for passing information are: memory, registers and stack (which is memory).
0
What Is Threat Intelligence?

Threat intelligence is often discussed, but rarely understood. Starting with a precise definition, along with clear business goals, is essential.

 
LVL 1

Author Comment

by:Corey_819
Comment Utility
Thank aib_42 you gave me some ideas on what I need to do. Thanks for taking the time to help :)
0
 
LVL 7

Expert Comment

by:aib_42
Comment Utility
I am sorry I couldn't be of any more help. Instruction decoding is a rather hard thing (which I'm inexperienced at), and we all know that even commercial debuggers don't get it right all the time.
0
 
LVL 7

Expert Comment

by:aib_42
Comment Utility
Umm, ignore that last post. What it basically said is, "it's 7:20 in the morning and my mind has stopped working."
0

Featured Post

Maximize Your Threat Intelligence Reporting

Reporting is one of the most important and least talked about aspects of a world-class threat intelligence program. Here’s how to do it right.

Join & Write a Comment

Veeam Backup & Replication has added a new integration – Veeam Backup for Microsoft Office 365.  In this blog, we will discuss how you can benefit from Office 365 email backup with the Veeam’s new product and try to shed some light on the needs and …
In this article, I will show you HOW TO: Create your first Windows Virtual Machine on a VMware vSphere Hypervisor 6.5 (ESXi 6.5) Host Server, the Windows OS we will install is Windows Server 2016.
In this tutorial you'll learn about bandwidth monitoring with flows and packet sniffing with our network monitoring solution PRTG Network Monitor (https://www.paessler.com/prtg). If you're interested in additional methods for monitoring bandwidt…
This video shows how to remove a single email address from the Outlook 2010 Auto Suggestion memory. NOTE: For Outlook 2016 and 2013 perform the exact same steps. Open a new email: Click the New email button in Outlook. Start typing the address: …

772 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

10 Experts available now in Live!

Get 1:1 Help Now