Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

I don\'t understand how to use MIPS can someone help me with this problem? Write

ID: 3596117 • Letter: I

Question

I don't understand how to use MIPS can someone help me with this problem?

Write a MIPS code that finds the minimum, maximum, sum and average of an array A. In your code, you need to load array A base address in the $s1 register. Once your code completes its execution, minimum, maximum, sum and average will be stored in $s2, $s3, $s4 and $s5 registers, respectively.

Hint: You can declare arrays with initialization list with the following MIPS declaration. .data A: .word 10, 160, 20, 70, 60, 140,150, 80, 90,100, 110, 30, 40, 120,130, 50 Asize: .word 16 ShiftAmount: .word 4 You can assume that the array size is power of 2. You can use shift operation for division calculation. You can use the ShiftAmount variable to specify the total shift.

Also: Compute the median of the array.

Explanation / Answer

.file 1 "" .section .mdebug.abi32 .previous .nan legacy .module fp=32 .module nooddspreg .abicalls .section .rodata.str1.4,"aMS",@progbits,1 .align 2 $LC0: .ascii "Enter the size of the array : " .align 2 $LC1: .ascii "%d" .align 2 $LC2: .ascii "Enter the elements in the array :" .align 2 $LC3: .ascii "Maximum number : %d
" .align 2 $LC4: .ascii "Minimum number : %d
" .align 2 $LC5: .ascii "sum : %d
" .align 2 $LC6: .ascii "Average : %d
" .section .text.startup,"ax",@progbits .align 2 .globl main .set nomips16 .set nomicromips .ent main .type main, @function main: .frame $fp,64,$31 # vars= 8, regs= 7/0, args= 16, gp= 8 .mask 0xc01f0000,-4 .fmask 0x00000000,0 .set noreorder .cpload $25 .set nomacro lw $5,%got($LC0)($28) addiu $sp,$sp,-64 lw $25,%call16(__printf_chk)($28) addiu $5,$5,%lo($LC0) sw $31,60($sp) movz $31,$31,$0 sw $fp,56($sp) sw $20,52($sp) move $fp,$sp sw $19,48($sp) sw $18,44($sp) sw $16,36($sp) .cprestore 16 sw $17,40($sp) .reloc 1f,R_MIPS_JALR,__printf_chk 1: jalr $25 li $4,1 # 0x1 lw $28,16($fp) addiu $5,$fp,24 lw $18,%got($LC1)($28) lw $25,%call16(__isoc99_scanf)($28) nop .reloc 1f,R_MIPS_JALR,__isoc99_scanf 1: jalr $25 addiu $4,$18,%lo($LC1) lw $2,24($fp) lw $28,16($fp) sll $2,$2,2 addiu $2,$2,10 lw $5,%got($LC2)($28) srl $2,$2,3 sll $2,$2,3 lw $25,%call16(__printf_chk)($28) subu $sp,$sp,$2 addiu $5,$5,%lo($LC2) .reloc 1f,R_MIPS_JALR,__printf_chk 1: jalr $25 li $4,1 # 0x1 lw $28,16($fp) addiu $16,$sp,16 move $19,$0 addiu $20,$18,%lo($LC1) $L2: lw $18,24($fp) nop slt $2,$19,$18 beq $2,$0,$L14 sll $5,$19,2 lw $25,%call16(__isoc99_scanf)($28) addu $5,$16,$5 .reloc 1f,R_MIPS_JALR,__isoc99_scanf 1: jalr $25 move $4,$20 lw $28,16($fp) b $L2 addiu $19,$19,1 $L14: lw $19,0($16) move $3,$16 move $4,$16 move $6,$19 move $2,$0 $L4: slt $5,$2,$18 beq $5,$0,$L15 nop lw $5,0($4) nop slt $7,$6,$5 beq $7,$0,$L5 nop move $6,$5 $L5: addiu $2,$2,1 b $L4 addiu $4,$4,4 $L15: move $2,$0 $L7: slt $4,$2,$18 beq $4,$0,$L16 nop lw $4,0($16) nop slt $5,$4,$19 beq $5,$0,$L8 nop move $19,$4 $L8: addiu $2,$2,1 b $L7 addiu $16,$16,4 $L16: move $2,$0 $L10: slt $4,$2,$18 beq $4,$0,$L17 addiu $2,$2,1 lw $4,0($3) nop addu $17,$17,$4 b $L10 addiu $3,$3,4 $L17: lw $5,%got($LC3)($28) lw $25,%call16(__printf_chk)($28) addiu $5,$5,%lo($LC3) .reloc 1f,R_MIPS_JALR,__printf_chk 1: jalr $25 li $4,1 # 0x1 lw $28,16($fp) move $6,$19 lw $5,%got($LC4)($28) lw $25,%call16(__printf_chk)($28) addiu $5,$5,%lo($LC4) .reloc 1f,R_MIPS_JALR,__printf_chk 1: jalr $25 li $4,1 # 0x1 lw $28,16($fp) move $6,$17 lw $5,%got($LC5)($28) lw $25,%call16(__printf_chk)($28) addiu $5,$5,%lo($LC5) .reloc 1f,R_MIPS_JALR,__printf_chk 1: jalr $25 li $4,1 # 0x1 bne $18,$0,1f div $0,$17,$18 break 7 1: lw $28,16($fp) li $4,1 # 0x1 lw $5,%got($LC6)($28) lw $25,%call16(__printf_chk)($28) mflo $6 mtc1 $6,$f0 nop cvt.s.w $f0,$f0 cvt.d.s $f0,$f0 mfc1 $7,$f0 mfc1 $6,$f1 .reloc 1f,R_MIPS_JALR,__printf_chk 1: jalr $25 addiu $5,$5,%lo($LC6) move $sp,$fp lw $31,60($sp) lw $fp,56($sp) lw $20,52($sp) lw $19,48($sp) lw $18,44($sp) lw $17,40($sp) lw $16,36($sp) move $2,$0 j $31 addiu $sp,$sp,64 .set macro .set reorder .end main .size main, .-main .ident "GCC: (Ubuntu 5.4.0-6ubuntu1~16.04.1) 5.4.0 20160609"

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Chat Now And Get Quote