Мне нужно создать программу (hard-code) в MIPS, которая получает массив из 10 целых чисел и находит разницу между двумя соседними числами в массиве. Это то, что я должен построить:Разница MIPS между двумя целыми числами в массиве
.data
array: .word 23,-2,45,67,89,12,-100,0,120,6
arrend:
comma: .asciiz ", "
# array = {23,-2,45,67,89,12,-100,0,120,6}
# Algorithm being implemented to find the difference between nearby elements of the array
# difference = 0 (use $t0 for difference)
# loop i = 0 to length-1 do (use $t1 for i)
# difference = array[i]-array[i+1]
# end loop (use $t3 for base addr. of array)
# registers:
# t0 -- difference
#
# t3 -- pointer to current array element (e.g. arrptr)
# t2 -- pointer to end of array
#
# t4 -- current value fetched from array (i)
# t5 -- value fetched from array (i+1)
.text
main:
li $t0,0 # difference = 0
la $t3,array # load base addr. of array
la $t2,arrend # load address of array end
j test
loop:
lw $t4,0($t3) # load array[i]
addi $t3,$t3,4 # increment array pointer
lw $t5,0($t3) # load array[i+1]
sub $t0, $t4, $t5 # the difference of two nearby elements
# print value of difference
li $v0,1
addi $a0,$t0,0
syscall
# print comma
li $v0,4
la $a0,comma
syscall
test:
blt $t3,$t2,loop # more to do? if yes, loop
вывод должен быть: 25, -47, -22, -22, 77, 112, -100, -120, 114,
но я получить выход 25, -47, -22, -22, 77, 112, -100, -120, 114, -8230,
Я узнал, если я изменю la $t2,arrend
к la $t2,0x10010024
, он будет работать, но Я не знаю, как записать его в коде.
Кроме того, как я могу улучшить свой код?
# ממן באוניברסיטה הפתוחה –