Go4Expert

Go4Expert (http://www.go4expert.com/)
-   Assembly Language Programming (ALP) Forum (http://www.go4expert.com/forums/assembly-language-programming-forum/)
-   -   Booth's Algorithm (http://www.go4expert.com/forums/booths-algorithm-t7379/)

cyrow 19Nov2007 09:15

Booth's Algorithm
 
I have been working on this Booth Algorithm in mips. The specifications of th problem are:
1. Provide a prompt for the multiplicant and the multiplier. 12 bits must be used and since 2 four bits numbers are entered, the answer must be eight (8) bits. Help me identify the problem in this code.
Code:

.text
        .globl main
main:
       
                li $v0, 4        #Enter multiplicant       
                la $a0, msg1
                syscall
                li $v0, 5
                syscall
                move $a0, $v0

                      li $v0, 4        #Enter multiplier
                la $a0, msg2
                syscall
                li $v0, 5
                syscall
                move $a1, $v0

               
                li $v0, 0
                li $t1, 0
                li $t0, 12        # twelve bits


algorithm:
                and $t2, $a0, 24 #24 bit mask
                sll $t2, $t2, 1
                or $t2, $t2, $t1
                beq $t2, 2, check10
                beq $t2, 1, check01
                b shift

check10:        sub $v0, $v0, $a1
                b shift

check01:        add $v0, $v0, $a1

shift:
                and $t1, $a0, 16 #16 bit mask
                and $t2, $v0, 8  #8 bit mas
                sll $t2, $t2, 31
                srl $a0, $a0, 1
                or $a0, $a0, $t2
                sra $v0, $v0, 1
                sub $t0,$t0, 1
                bnez $t0, algorithm



                # Printing the 8 bits results ($v0,$a0)
                li                $v0, 4               
                la                $a0, msg3
                syscall
                li                $v0,1               
                move                $v0, $a0
                syscall


.data
        msg1: .asciiz"\nEnter multiplicand"
        msg2: .asciiz"\nEnter multiplier"
        msg3: .asciiz"\nThe Eight bits result is"



All times are GMT +5.5. The time now is 06:55.