본문 바로가기

MIPS/공부

배열에서 값을 찾아 연산하는 프로그램

식: f = A[B[g]+1]; 

배열 A={5, 9, 15, 2, 7, 1, 3, 3, 44, 6}
배열 B={1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

 

배열이므로 첫 번째 수의 자리는 0

 

.data
msg1: .asciiz "Please, type a number for g: "
msg2: .asciiz "The result is "

arrayA: .word 5, 9, 15, 2, 7, 1, 3, 3, 44, 6
arrayB: .word 1, 2,  3,  4, 5, 6, 7, 8, 9, 10

.text
.globl main
main:
	la $s6, arrayA	#f=A[B[g]+1] (목표)	f,g $s0,$s1
	la $s7, arrayB	#배열 A,B  $s6,$s7	

	li $v0, 4
	la $a0, msg1
	syscall		#Please, type a number for g:
	
	li $v0, 5 
	syscall
	move $s1, $v0	#$s1=g
	
	li $t0, 4		#$t0=4
	mul $t1, $s1, $t0	#$t1=g*4

	add $s7, $s7, $t1
	lw $t1, ($s7)
	addi $t1, $t1, 1	#$t1=B[g]+1

	mul $t1, $t1, $t0
	add $s6, $s6, $t1
	lw $s0, ($s6)	#$s0=f

	li $v0,4
	la $a0, msg2
	syscall 		#The result is
	
	li $v0, 1
	move $a0, $s0
	syscall

	li $v0,10  
	syscall		#종료
	

 

B[2]=3, A[3+1]=7