-1
MIPSで10個の整数の配列を取得し、配列内の2つの近傍の数値の差を求めるプログラム(ハードコード)を構築する必要があります。出力があるべき配列内の2つの整数間の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,
が、私は私がla $t2,0x10010024
にla $t2,arrend
を変更した場合、それは動作しますが分かった出力25, -47, -22, -22, 77, 112, -100, -120, 114, -8230,
を得るが、私はコードにそれを書く方法を知らない。
さらに、コードを改善するにはどうすればよいですか?
#ממןבאוניברסיטההפתוחה –