×
INTELLIGENT WORK FORUMS
FOR COMPUTER PROFESSIONALS

Log In

Come Join Us!

Are you a
Computer / IT professional?
Join Tek-Tips Forums!
  • Talk With Other Members
  • Be Notified Of Responses
    To Your Posts
  • Keyword Search
  • One-Click Access To Your
    Favorite Forums
  • Automated Signatures
    On Your Posts
  • Best Of All, It's Free!

*Tek-Tips's functionality depends on members receiving e-mail. By joining you are opting in to receive e-mail.

Posting Guidelines

Promoting, selling, recruiting, coursework and thesis posting is forbidden.

Students Click Here

Learning assembly

Learning assembly

Learning assembly

(OP)
Hello

I have the art of assembly tutorial and another one and I appear to be having trouble with converting binary into decimal.

Here's an example of what I mean:
**********************************************************
BIN to DEC coversions  self exercises


BIN: 11001
This one from the tutorial and comes out to be correct:
1*2^0 + 1*2^1 + 0*2^2 + 0*2^3 + 1*2^4

= 1   +   2   +   0   +   0   +  16  //-->  19 DEC

*******************************************************************
These answers should be flip-flopped
41 should be the first example and 37 should be the second example?

BIN: 101001

1*2^0 + 0*2^1 + 1*2^2 + 0*2^3 + 0*2^4 + 1*2^5

= 1   +   0   +   4   +   0   +   0   +  32  //-->   37 DEC


100101

1*2^0 + 0*2^1 + 0*2^2 + 1*2^3 + 0*2^4 + 1*2^5

= 1   +   0   +   0   +   8   +   0   +   32  //-->   41 DEC

********************************************************************
One I tried out on my own.
Another one that comes out wrong.  Should be 78, not 57?
BIN: 1001110

1*2^0 + 0*2^1 + 0*2^2 + 1*2^3 + 1*2^4 + 1*2^5 + 0*2^6

= 1   +   0   +   0   +   8  +   16  +   32   +   0  //-->  57 DEC



I do not know what I may be doing wrong.  I do examples on paper and they come out different, but the example from the tutorial comes out right.   I am a total beginner at this and if anyone knows what I might be doing wrong, please let me know.

Thanks for your time.

RJ

RE: Learning assembly

How do you split up a decimal number? From high significance to low significance!
e.g.: 1324 = 1*1000 + 3*100 + 2*10 + 4*1

How do you split up a binary number? Also from high significance to low significance!
e.g.: 11001 = 1*16 + 1*8 + 0*4 + 0*2 + 1*1

What does high and low significance mean? A digit is high significant if the value of a number changes relatively much when making small changes to this digit.
e.g.: take 43816, add 1 to MSD (most significant digit), then we get 53816, which has a much bigger value than 43816 (we added 10000 to the number, just by adding 1 to the MSD!).
The LSD (least significant digit) is then of course the rightmost digit.

The only difference between binary and decimal is that you use another base number, 2 in stead of 10, and this has two consequences:
1) you can only use 2 different digits (people have chosen this to be zero and one) in stead of 10.
2) you must define values on the base of powers of 2 in stead of powers of 10
e.g.: 1101d = 1*1000 + 1*100 + 0*10 + 1*1
      1101b = 1*8    + 1*4   + 0*2  + 1*1

Regards,
Bert Vingerhoets
vingerhoetsbert@hotmail.com
http://student.vub.ac.be/~bvingerh/
Don't worry what people think about you. They're too busy wondering what you think about them.

RE: Learning assembly

(OP)
Hi Bert

This explaination simplifies things better as the base 2 and ten systems goes, now -- the 11001 part, how is this converted to a decimal equivalent?

11001 = 1*16 + 1*8 + 0*4 + 0*2 + 1*1

The way you show this looks easier to comprehend than how the tutorial I'm learning explains it.

The tutorial had a way of adding these somehow together to form a decimal equivalent.  The first example I displayed was considered correct, the others after that aren't for some reason.

I read that going in the other direction i.e. converting decimal to binary -- you need to keep dividing from the full decimal number by 2's and if there is no remainder then that number becomes a O and if the number doesn't divide equally it somehow becomes a 1?  This division keeps going until there is nothing left of the decimal number and what is leftover is the binary string.  I think this is right?

maybe the tutorial I'm learning is explaining it differently but is the same thing, or maybe I need a different tutorial?

Thanks for your time.  The layout you showed looks better to me and looks much simpler.

RJ

  

RE: Learning assembly

bin->dec:
each position of a binary digit corresponds to a value that can be interpreted as a decimal value, if the digit is a 1, this means that the value at that position is part of the result (i.e. must be added to the result).
Example:
positions:    8    7    6    5    4    3    2    1
dec value:  128   64   32   16    8    4    2    1
pwr of 2 :  2^7  2^6  2^5  2^4  2^3  2^2  2^1  2^0

              0    0    0    1    1    0    0    1
            = 0  + 0  + 0 + 16  + 8  + 0  + 0  + 1
            = 25


dec->bin:
when converting a decimal value X to its corresponding binary value, you can use the following procedure:

substract the highest possible power of 2 from X
take a pencil and write 1
(*)if the second highest power of 2 is smaller than X, substract and write 1, else write 0
repeat from (*) to end until the power of 2 is 1

Example:
X = 25
highest power of 2, smaller than X = 16 (2^4)
X-16 = 9
bitstring = '1'
next power of 2 is 8 (2^3)
X >= 8?
yes -> X-8 = 1; bitstring = '11'
next power of 2 is 4 (2^2)
X >= 4?
no -> bitstring = '110'
next power of 2 is 2 (2^1)
X >= 2?
no -> bitstring = '1100'
next power of 2 is 1 (2^0)
X >= 1?
yes -> X-1 = 0; bitsring = '11001'

Regards,
Bert Vingerhoets
vingerhoetsbert@hotmail.com
http://student.vub.ac.be/~bvingerh/
Don't worry what people think about you. They're too busy wondering what you think about them.

RE: Learning assembly

(OP)
Thanks Bert

Your examples are very easy to follow.   I did a quiz exercises on one of those sites on math coversions and I passed it, was very surprised.

Thanks for your time Bert

RJ

Red Flag This Post

Please let us know here why this post is inappropriate. Reasons such as off-topic, duplicates, flames, illegal, vulgar, or students posting their homework.

Red Flag Submitted

Thank you for helping keep Tek-Tips Forums free from inappropriate posts.
The Tek-Tips staff will check this out and take appropriate action.

Reply To This Thread

Posting in the Tek-Tips forums is a member-only feature.

Click Here to join Tek-Tips and talk with other members! Already a Member? Login


Close Box

Join Tek-Tips® Today!

Join your peers on the Internet's largest technical computer professional community.
It's easy to join and it's free.

Here's Why Members Love Tek-Tips Forums:

Register now while it's still free!

Already a member? Close this window and log in.

Join Us             Close