我才开始学习mips。我正在尝试编写一个简单的程序,将3个数字加在一起。程序应提示3次输入数字,然后输出总和。这是我写的
.data
instructions: .asciiz "Please enter a number : "
.text
main:
li $t0, 0x00 # i = false
li $t1, 0x00 #sum = 0
while: # while(i < 3 )
bgt $t0, 0x02, exit
b prompt
prompt:
li $v0, 0x04 # set IO to output string
la $a0, instructions #load the address of instructions into $a0 for IO
syscall # print
li $v0, 0x05
syscall
sw $v0, 0x0($t3) #address out of range 0x000000
add $t1,$t1,$t2
b while
exit:
li $v0,0x01
move $a0, $t1
syscall
错误发生在sw过程中。调试器告诉我$t3
的值为0,但我需要从$v0
读取值并将其存储在$t3
中。我确定这是我对mips不了解的一些事情。
答案 0 :(得分:0)
sw
是指令,而非程序。
无论如何,sw
的目的是将寄存器的内容存储在内存中。听起来我只想将一个寄存器的内容复制到另一个寄存器,所以你应该使用的指令是move
:
move $t3,$v0 # $t3 = $v0
可以通过其他几种方式实现同样的目标,例如:
or $t3,$v0,$zero
但如果您刚刚开始使用MIPS程序集,我建议您使用move
。