首页 > 解决方案 > MIPS 试图换成单词

问题描述

我正在尝试交换数据中的变量,以便在 QTSimp 中运行时 5、7 变为 s 7,5。但是我无法在 QtSpim 中运行代码。我认为问题在于我只是在更改指针而不是实际更改数据的值。我将如何解决这个问题?

 .text
main:
    la  $a0,n1
    la  $a1,n2
    jal     swap
    li  $v0,1   # print n1 and n2; should be 7 and 5
    lw  $a0,n1
    syscall
    li  $v0,11
    li  $a0,' '
    syscall
    li  $v0,1
    lw  $a0,n2
    syscall
    li  $v0,11
    li  $a0,'\n'
    syscall
    li  $v0,10  # exit
    syscall

swap:
    xor $a0 $a0 $a1
    xor $a1 $a0 $a1
    xor $a0 $a0 $a1
    jr $ra


L1: 

    .data
n1: .word   5
n2: .word   7

标签: mipsqtspim

解决方案


内存访问需要加载和存储,在我们称为解引用的操作中,它在汇编中使用寻址模式。

这个想法是将内存数据复制到 cpu 寄存器中,以便您可以操作这些副本。由于您希望效果回到内存中,因此您还需要使用存储。

所以,加载两者,然后存储两者,交换它们来自哪里和去哪里。


推荐阅读