1

問題に対して私がすべきことは、それらの値を保存し、行列を出力する必要があることです。ユーザーは行数、列数、および要素の値を入力するよう求めています。今のところ、私が印刷/保存部分を正しく行いました。入力された単一の文字列を印刷しようとしましたが、機能しません

    .text
    .globl main

main:
addi $v0, $0, 4   
la   $a0, str1 
syscall             #printing str1 
addi $v0, $0, 5   
syscall 
la $t1, M1_1
sw $v0, 0($t1)      #reading and storing the number of rows 

addi $v0, $0, 4   
la   $a0, str2 
syscall             #printing str2 
addi $v0, $0, 5   
syscall 
la $t2, M1_2
sw $v0, 0($t2)      #reading and storing the number of columns   

addi $v0, $0, 4   
la   $a0, str3 
syscall             #printing str3 
addi $v0, $0, 5   
syscall 
la $t3, M1_3
sw $v0, 0($t3)      #reading and storing the value of element   


    .data


str1:.asciiz "\“Please enter the number of rows in the matrix\n"
str2:.asciiz "\“Please enter the number of columns\n"
str3:.asciiz "\“Please enter the elements of the matrix\n"
.align 2
M1:.space 256 
M1_1:.space 4
M1_2:.space 4
M1_3:.space 4
M2:.space 256 
M2_2:.space 4
4

1 に答える 1

2

SPIM でコードをステップ実行した後、行sw $v0, 0($t1)が問題のようです。swを使用して入力を register に移動するのではなく、コマンド$t0を使用することをお勧めしmoveます。以下のコード サンプルでは、​​入力として受け取った値を register に保存する方法を示すために、コードを変更しました$t0

    .text
    .globl main

main:
    sub         $sp , $sp , 4           # push stack
    sw          $ra , 0 ( $sp )     # save return address

    addi        $v0 , $0 , 4   
    la          $a0 , str1 
    syscall     #printing str1

    addi        $v0 , $0 , 5   
    syscall     #get input

    move        $t0 , $v0               # save input in $t0
    move        $a0 , $v0
    addi        $v0 , $0 , 1
    syscall     #print first input

    ...

各 MIPS 命令の使用方法の詳細については、このページを参照してください

于 2013-04-30T23:49:40.430 に答える