Assembly 用于乘法MIPS汇编的移位位

Assembly 用于乘法MIPS汇编的移位位,assembly,mips,bit-shift,Assembly,Mips,Bit Shift,我正在编写一个MIPS汇编语言程序,通过使用“sll”操作移位位来执行乘法运算。 以下是我的源代码: .text .globl main main: ori $5,$0,2 # put x into $5 ori $6,$0,4 # put y into $6 sll $5,$5,3 # put 8*x into $8 sll $6,$6,1 # put 2*y

我正在编写一个MIPS汇编语言程序,通过使用“sll”操作移位位来执行乘法运算。 以下是我的源代码:

    .text
    .globl  main

main:
    ori     $5,$0,2     # put x into $5
    ori     $6,$0,4        # put y into $6
    sll     $5,$5,3        # put 8*x into $8
    sll     $6,$6,1        # put 2*y into $9
    subu    $10,$8,$9      # $5 - $6, put result in 10
    addiu   $10,$10,14     # add register 10 and number 14, put result in 10
文件结束
我的“sll$5,$5,3”行应该是将寄存器5的内容乘以2^3,然后将其放回寄存器5。它显示的不是16,而是10。我的猜测是它执行的三位移位导致了溢出问题,但是我想不出一个方法来纠正这个问题

您对
sll
指令的注释似乎与代码不一致。只有当寄存器宽度小于5位时才会出现溢出。是否可能以十六进制显示结果?16十进制是10十六进制。@Barmar谢谢,我用十六进制显示寄存器值。谢谢你!