-1
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,
하지만 난 내가 la $t2,arrend
la $t2,0x10010024
에, 그것은 작동 변경하는 경우 발견 25, -47, -22, -22, 77, 112, -100, -120, 114, -8230,
출력을 얻을 수 있지만, 코드에 어떻게 쓰는지 모르겠습니다.
내 코드를 개선하려면 어떻게해야합니까?
# ממן באוניברסיטה הפתוחה –