EASy68K
http://www.easy68k.com/EASy68Kforum/

Easy68k - Division Case (decimal point)
http://www.easy68k.com/EASy68Kforum/viewtopic.php?f=6&t=1053
Page 1 of 1

Author:  ulyses [ Thu Nov 17, 2011 5:25 am ]
Post subject:  Easy68k - Division Case (decimal point)

Dear friends,

I've just received my task for microprocessor class. The question given is, R = (A-B) / (A+B). The problem is, I don't know how to display the results in decimal point. (Such, 2 divide by 4 equal to 0.5). I need your help to solve the problem.

Thank you.


Here's the source code I did:
Code:
CR    EQU    $0D
LF    EQU    $0A


START    ORG    $1000
               
*-----------------------------------------------------------   

A    LEA     AVALUE,A1
    MOVE.B    #14,D0
    TRAP    #15
       
    MOVE.B    #4,D0
    TRAP    #15
    MOVE.L    D1,D2
    BEQ    ZR

B    LEA     BVALUE,A1
    MOVE.B    #14,D0
    TRAP    #15
   
    MOVE.B    #4,D0
    TRAP    #15
    MOVE.L    D1,D3
    MOVE.L    D3,D4
   
    SUB.L    D3,D2
    MOVE.L    D2,D5
    ADD.L    D2,D4
    MOVE.L    D4,D6
    DIVS.W    D6,D5
 
    MOVE.L    D5,d1
   
    MOVE.L    #3,D0
    TRAP    #15
   
AVALUE    DC.B    'ENTER THE A VALUE =',0           
BVALUE    DC.B    'ENTER THE B VALUE =',0

    END    START       

Author:  profkelly [ Thu Nov 17, 2011 1:30 pm ]
Post subject: 

Have you verified with the instructor that your solution must display decimal numbers?

If so, the simplest solution would be to use fixed point math.
http://en.wikipedia.org/wiki/Fixed-point_arithmetic
There are also several posts on this forum about doing
fixed point math. Try searching the forum for more examples.

If you need a floating point solution check out the Fast-Floating-Point code provided by Paul R. Santa-Maria on the Examples page
http://www.easy68k.com/codeLibrary.htm

Author:  clive [ Thu Nov 17, 2011 4:45 pm ]
Post subject: 

Your could also look at the remainder, and pull the information from there
R = (A-B) / (A+B) ; integer digits
S = (A-B) % (A+B)

Then repeating for each decimal place
S = S * 10
T = S / (A+B) ; fractional digit
S = S % (A+B)

Page 1 of 1 All times are UTC
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/