Im tring to mutiply two numbers in mips by using the multipl

I\'m tring to mutiply two numbers in mips by using the multiplication algorithm, this is my code below. I have no idea what wrong with it, can anyone help me to make the code wrok?

.data
newline: .asciiz \"\ \"
msg: .asciiz \"Please enter two numbers one for multiplier, another for multiplicand.\"
msg1: .asciiz \"multiplier=\"
msg2: .asciiz \"multiplicand=\"
chara: .asciiz \"*\"
chara1: .asciiz \"=\"

.text
.globl main

main:
#print the strings in msg
la $a0, msg
li $v0, 4
syscall
la $a0,newline
syscall

#get the multiplicand from user
la $a0, msg2
li $v0, 4
syscall
li $v0,5
syscall
move $t1, $v0
la $a0,newline
syscall

#get the multiplier from user
la $a0, msg1
li $v0, 4
syscall
li $v0,5
syscall
move $t0, $v0
la $a0,newline
syscall

move $s3,$0
move $s4,$0
li $s1,32
or $s0,$0,$0

loop: beq $s0,$s1,done
andi $t2,$a0,1
bne $t2,$0,multr1
addi $s0,$s0,1
j loop
syscall

mult0: sll $t1,$t1,1
sll $t0,$t0,1

mult1: addu $s3,$s3,$t1
sll $t1,$t1,1
sll $t0,$t0,1

done: add $a0,$t1,$0
li $v0, 1
syscall
la $a0, chara
li $v0, 4
syscall
add $a0,$t0,$0
li $v0, 1
syscall
la $a0, chara1
li $v0, 4
syscall
add $a0,$s3,$0
li $v0, 1
syscall
  
li $v0,10
syscall

Solution

.data

    promptStart:    .asciiz \"Please enter two numbers one for multiplier, another for multiplicand.\"
           getA:    .asciiz \"multiplier=\"
           getB:    .asciiz \"multiplicand=\"

          space:    .asciiz \" \"

         result:    .asciiz \"=\"

       newLine: .asciiz \"\ \"

.text

main:
    #\"welcome\" screen
    li $v0,4           # code for print_string
    la $a0,promptStart # point $a0 to prompt string
    syscall             # print the prompt


    li $v0,4           # code for print_string
    la $a0,newLine     # point $a0 to prompt string
    syscall             # print the prompt

    #prompt for multiplicand
    li $v0,4           # code for print_string
    la $a0,getA        # point $a0 to prompt string
    syscall             # print the prompt

    #acquire multiplicand
    li $v0,5           # code for read_int
    syscall             # get an int from user --> returned in $v0
    move    $s0,$v0     # move the resulting int to $s0
    move    $s5,$s0     # copy of multiplicand to use in multu

    #prompt for multiplier
    li $v0,4           # code for print_string
    la $a0,getB        # point $a0 to prompt string
    syscall             # print the prompt

    #acquire multiplier
    li $v0,5           # code for read_int
    syscall             # get an int from user --> returned in $v0
    move    $s1,$v0     # move the resulting int to $s0

    move    $s6,$s1     # copy of multiplier to use in multu

    jal MyMult
    j   print

MyMult:
    move $s3, $0        # lw product
    move $s4, $0        # hw product

    beq $s1, $0, done
    beq $s0, $0, done

    move $s2, $0        # extend multiplicand to 64 bits

loop:
    andi $t0, $s0, 1    # LSB(multiplier)
    beq $t0, $0, next   # skip if zero
    addu $s3, $s3, $s1 # lw(product) += lw(multiplicand)
    sltu $t0, $s3, $s1 # catch carry-out(0 or 1)
    addu $s4, $s4, $t0 # hw(product) += carry
    addu $s4, $s4, $s2 # hw(product) += hw(multiplicand)
next:
    # shift multiplicand left
    srl $t0, $s1, 31    # copy bit from lw to hw
    sll $s1, $s1, 1
    sll $s2, $s2, 1
    addu $s2, $s2, $t0

    srl $s0, $s0, 1     # shift multiplier right
    bne $s0, $0, loop

done:
    jr $ra

print:
    # print result string
    li $v0,4           # code for print_string
    la $a0,result      # point $a0 to string
    syscall             # print the result string

    # print out the result
    li $v0,1           # code for print_int
    move    $a0,$s4     # put result in $a0
    syscall             # print out result

    li $v0,4           # code for print_string
    la $a0,space       # point $a0 to string
    syscall             # print the result string

    li $v0,1           # code for print_int
    move    $a0,$s3     # put result in $a0
    syscall             # print out result


    # print the line feed
    li $v0,4           # code for print_string
    la $a0,newLine     # point $a0 to string
    syscall             # print the linefeed

I\'m tring to mutiply two numbers in mips by using the multiplication algorithm, this is my code below. I have no idea what wrong with it, can anyone help me to
I\'m tring to mutiply two numbers in mips by using the multiplication algorithm, this is my code below. I have no idea what wrong with it, can anyone help me to
I\'m tring to mutiply two numbers in mips by using the multiplication algorithm, this is my code below. I have no idea what wrong with it, can anyone help me to

Get Help Now

Submit a Take Down Notice

Tutor
Tutor: Dr Jack
Most rated tutor on our site