-
February 22nd, 2005, 03:50 PM
#1
Junior Member
assembly
is this the right place to ask questions on assembly???
-
February 22nd, 2005, 04:16 PM
#2
Not really, but there are people here that can help you.
If you have a question ask it, and someone will get back to you.
-
February 22nd, 2005, 04:40 PM
#3
Actually, this is the right place to ask
-
February 22nd, 2005, 04:47 PM
#4
Junior Member
ok.my first question is regarding assembly arimethic.i understand that when u want do add a or subtract two data's that are more than a word long,u would have to process it one word at a time right?so what about multiplying and dividing data that is more than a word long???
thanks
-
February 23rd, 2005, 06:36 AM
#5
Hi
Unfortunately, it is not such a simple task to perform what you want,
at least as much as I know.
I suggest you look up the SSE2 (or start with SSE[1])-instruction set.
I have some experience with those, but I mainly dealt with the optimisation
of single/double-precision floating point arithmetics - by parallelising rather
than having quadword operations[2]. The ops you are interested in are
paddq, psubq and pmuludq (division has to be replaced by inversion (~approximated)
and multiplication. Be careful, you might run into give carry/borrow problems.
Cheers.
[1] http://www.intel.com/software/produc...d/download.htm
[2] http://cache-www.intel.com/cd/00/00/...ng_started.pdf
If the only tool you have is a hammer, you tend to see every problem as a nail.
(Abraham Maslow, Psychologist, 1908-70)
-
February 23rd, 2005, 10:51 AM
#6
Junior Member
thank you for the links.
what if the code has to be written on a 8088 processor which has only has 16-bit registers?i just need to know the method to accomplish this task.but a source code would be much appreciated.
i'm just asking this question for academic purposes only and i am just stumped at this point.
thanks.
-
February 23rd, 2005, 11:07 AM
#7
Make use of the carry flag.
I don't know much about i386 assembly but I used to do a lot of 6510 and 68000 assembly.
The idea should be the same...
If you add 2 numbers together the carry flag will be set when it doesn't 'fit' anymore.
Add the next 2 numbers and add the carry flag. etc... Just like you would do a 'regular' addition on paper.
If you add 9 and 2 i.e. you're basicly using a carry because 11 doesn't 'fit' anymore into 1 digit (on a 10based number system).
So you add 9 and 2... which is 1 and a carry. The next digit is 0 + 0 + carry(1). That makes 11.
Same idea works for bigger numbers..
Oliver's Law:
Experience is something you don't get until just after you need it.
-
February 23rd, 2005, 11:47 AM
#8
Junior Member
sir dice,
what if it's a multiply or division operation?
-
February 23rd, 2005, 02:18 PM
#9
How do you multiply? Using MUL or shifting bits?
Shifting bits is probably easier and perhaps faster (MUL uses a lot of cycles and may not be available RISC i.e.).
I hope you know that shifting 1 bit to the left is the same as multiplying by 2?
I'll use a 4 bit example but the same principle works for 8, 16, 32 and 64 bits.
4 bit: 2 x 4
0100 (4) shift 1 bit to the left makes 1000 (8).
4 bit: 2 x 9
1001 (9) shift 1 bit to the left makes 0010 and the carry bit gets set. Shift that carry bit into the next 4 bits.. and you get 0001 0010 (18)
What if you need to multiply by 3?
4 bit: 3 x 4 = (2 x 4) + 4
shift 1 bit like above and add 4... 1000 + 0100 = 1100 (12)
4 bit: 3 x 9 = (2 x 9) + 9
same as above for 2x9 and add 9.. 0001 0010 + 0000 1001 = 0001 1011 (27)
Does that make sense?
Edit: Just in... You could also use a repeated addition (loop). 6x4 = 4+4+4+4+4+4
Oliver's Law:
Experience is something you don't get until just after you need it.
-
February 23rd, 2005, 05:10 PM
#10
Junior Member
sir dice ,
thank you.that was briliant.
"3 x 4 = (2 x 4) + 4"
"3 x 9 = (2 x 9) + 9"
how did you come to that conclusion?
so i guess that for division we just use repeated subtration right or shift to the right,correct?
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
|