Я пытаюсь использовать Mips Mars для создания ассемблерного кода, который использует сдвиг битов и цикл для умножения любого числа до 32 бит.Но это повторяется только дважды, если это так.
Я уже получил множитель и умножение ранее в программе.
$ t0 = умножение
$ t1 = множитель
#Multiply operation
li $t3 0 #Counter
li $t4 0 #result
li $t6 0x80000000
myLoop:
bgt $t3, 31, showMessage
addi $t3, $t3, 1 #Keep track of counter $t3
andi $t7, $t1, 1 #Find lsb of multiplier
andi $t8, $t6, 1 #Find LSB $t6
and $t5, $t8, $t7 #And LSB of multiplier and lsb $t6
sll $t6, $t6, 1 #shift $t6 right 1
srl $t1, $t1, 1 #Shift multiplier right 1
blez $t7, myLoop
add $t4, $t0,0 #Result
sll $t0, $t0, 1 #Shift multiplicand left one
j myLoop
Я ожидаювыходное значение 4 * 3 должно быть 12, но оно равно 8.