Assembly 用于乘法MIPS汇编的移位位
我正在编写一个MIPS汇编语言程序,通过使用“sll”操作移位位来执行乘法运算。 以下是我的源代码: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
.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谢谢,我用十六进制显示寄存器值。谢谢你!