.data
.align 2
Z: .word 6, 7, 8 ,9 , 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36
k: .word 0
m: .word 0
.text
.globl main
main: # main is global label
addu $s7, $0, $ra # save return address
lw $s1, Z # base address of Z in $s1
#------------------------------------getting k
.data
.globl message1
message1: .asciiz "\nInput value for k: " #string to print
.text
li $v0, 4 # print_string (system call 4)
la $a0, message1 # takes the address of string as an argument
syscall
li $v0, 5 # read_int (system call 5)
syscall
add $t1, $0, $v0 # -> $s2
sw $t1, k # k is stored
#------------------------------------getting m
.data
.globl message2
message2: .asciiz "\nInput value for m: " #string to print
.text
li $v0, 4 # print_str (system call 4)
la $a0, message2 # takes the address of string as an argument
syscall
li $v0, 5 # read_int (system call 5)
syscall
add $s3, $0, $v0 # -> $s3
sw $s3, m # m is stored
#-----------------------------------calculating Z[12] = Z[k] + Z[k+m]
.text
lw $t0, k($s1) # store Z[k] -> $t0
add $t1, $s2, $s3 # k + m -> $t1
lw $t2, m($s1) # store Z[k+m] -> $t2
add $t3, $t0, $t2 # Z[k] + Z[k+m] -> $t3
sw $t3, 48($s1) # store Z[k] + Z[k+m] -> Z[12]
Кажется, я не понимаю, почему вычисление Z [12] = Z [k] + Z [k + m] кода является полным провалом и просто приводит к ошибкам. Я попытался просмотреть мои заметки и прочитать руководство, но не повезло. я упускаю что-то важное ...
я предполагаю, что это как-то связано с вычислением смещения ?? как
lw $ t0, k ($ s1)
lw $ t2, м ($ s1)
sw $ t3, 48 ($ s1)
все дают мне ошибки. Это означает, что они совершенно неверны и в основном неверный синтаксис. но я не знаю, что делать кроме этого.