MIPS 汇编中的整数问题
Posted
技术标签:
【中文标题】MIPS 汇编中的整数问题【英文标题】:Integer Problem in MIPS assembly 【发布时间】:2009-11-30 05:33:20 【问题描述】:如果我提示用户输入一个整数,则使用 MIPS 程序集我如何才能获取该整数并将其分解为必要的部分?
例子:
# User inputs a number
li $v0, 5 # read value of n
syscall
然后我将 $v0 中的值存储在一个临时寄存器中,比如 $t0,并且需要将它分解为组成它的每个部分。因此,308 必须分解为:3、0 和 8。我需要这样做,以便我可以将这些部分中的每一个平方并将它们相加。
来自用户的输入值必须以整数形式输入。
谢谢, 核磁共振
【问题讨论】:
【参考方案1】:除以 10,用余数得到 8,如果商不为零,再除以 10,如果商不为零,则再用余数归零。
【讨论】:
这很有意义。我完全是在想那个。感谢您的帮助。【参考方案2】:这是@Don 的回答,有一点不同
$t0 包含用户输入。 (假设未签名)
li $t1,10
DIVU $t0,$t1 //divide by 10
mfhi $t2 //t2 contains the division result
mflo $t3 //t3 containts the division remainder
使用 beq, bgt 进行比较。
一些帮助
http://www.mrc.uidaho.edu/mrc/people/jff/digital/MIPSir.html
【讨论】:
以上是关于MIPS 汇编中的整数问题的主要内容,如果未能解决你的问题,请参考以下文章
汇编优化系列关于符号扩展和无符号扩展(包括mips msa实现)