assembly 在不使用MUL命令的情况下解决以mips为单位的乘法问题

4urapxun  于 2022-12-13  发布在  其他
关注(0)|答案(1)|浏览(138)
  • 我想做什么 *

翻译此代码时不使用穆尔命令,而只使用其他可能的命令,如add、subtruct和logical shift命令。

.text
.globl main
main:              # execution starts here
    li $t0,19057        
    li $t1,123               # input data in $t1
    sll $t0,$t0,27
    srl $t0,$t0,26
    mul $t2,$t1,$t0
    li $v0,10   
    syscall

所创建的程序必须与$t2寄存器中的初始程序具有相同的出口,而不使用穆尔命令。我应该用什么命令替换mul命令才能具有相同的输出?
注:$t1寄存器可接受1到10.000.000之间的任何数字。

7cjasjjr

7cjasjjr1#

我用一个循环来模拟MUL命令的工作方式,然后将最终结果存储在寄存器$t2中。

.text
.globl main

main:              # execution starts here
li $t0,19057        
li $t1,123               # input data in $t1

# shift left by 27 bits
sll $t0,$t0,27

# shift right by 26 bits
srl $t0,$t0,26

# initialize result to 0
li $t2, 0

# loop until the multiplier is 0
loop:
beq $t0, $0, end

# add the multiplicand to the result
add $t2, $t2, $t1

# decrement the multiplier
addi $t0, $t0, -1

# jump to the beginning of the loop
j loop

# end of the multiplication
end:

li $v0,10   
syscall

相关问题