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

Write a MIPS Assembly Language program which requests a filename from from the u

ID: 3593494 • Letter: W

Question

Write a MIPS Assembly Language program which requests a filename from from the user. The file must contain integers which are on separate lines. The program then reads the file,

Accumulate the sum of the products which is output as the final value.

Execution should look similar to the following:

What file contains your information? plugh.txt

Final output = n1 * n2 + n3 * n4 + ...

Upload your source code and report.

Suppose that the input file contains 10 data values: n0, n1, ..., n9. Then the output might look like (where values, not labels are output and sp = p0 + p1 + p2 + p3 + p4):

n0 * n1 = p0

n2 * n3 = p1

n4 * n5 = p2

n6 * n7 = p3

n8 * n9 = p4

Final Output = sp

Explanation / Answer

Solution:

code:

.file 1 ""

.section .mdebug.abi32

.previous

.nan legacy

.module fp=32

.module nooddspreg

.abicalls

.rdata

.align 2

$LC0:

.ascii "r"

.align 2

$LC1:

.ascii "D:\test.txt"

.align 2

$LC2:

.ascii "Cannot open file "

.align 2

$LC3:

.ascii "%i"

.align 2

$LC4:

.ascii "%d"

.text

.align 2

.globl main

.set nomips16

.set nomicromips

.ent main

.type main, @function

main:

.frame $fp,56,$31 # vars= 24, regs= 2/0, args= 16, gp= 8

.mask 0xc0000000,-4

.fmask 0x00000000,0

.set noreorder

.cpload $25

.set nomacro

addiu $sp,$sp,-56

sw $31,52($sp)

sw $fp,48($sp)

move $fp,$sp

.cprestore 16

movz $31,$31,$0

sw $0,24($fp)

lw $2,%got($LC0)($28)

nop

addiu $5,$2,%lo($LC0)

lw $2,%got($LC1)($28)

nop

addiu $4,$2,%lo($LC1)

lw $2,%call16(fopen)($28)

nop

move $25,$2

.reloc 1f,R_MIPS_JALR,fopen

1: jalr $25

nop

lw $28,16($fp)

sw $2,36($fp)

lw $2,36($fp)

nop

bne $2,$0,$L2

nop

lw $2,%got($LC2)($28)

nop

addiu $4,$2,%lo($LC2)

lw $2,%call16(puts)($28)

nop

move $25,$2

.reloc 1f,R_MIPS_JALR,puts

1: jalr $25

nop

lw $28,16($fp)

move $4,$0

lw $2,%call16(exit)($28)

nop

move $25,$2

.reloc 1f,R_MIPS_JALR,exit

1: jalr $25

nop

$L2:

sw $0,40($fp)

sw $0,44($fp)

li $2,1 # 0x1

sw $2,28($fp)

b $L3

nop

$L8:

sw $0,32($fp)

lw $2,28($fp)

nop

beq $2,$0,$L4

nop

addiu $2,$fp,44

move $6,$2

lw $2,%got($LC3)($28)

nop

addiu $5,$2,%lo($LC3)

lw $4,36($fp)

lw $2,%call16(__isoc99_fscanf)($28)

nop

move $25,$2

.reloc 1f,R_MIPS_JALR,__isoc99_fscanf

1: jalr $25

nop

lw $28,16($fp)

sw $2,32($fp)

sw $0,28($fp)

b $L5

nop

$L4:

addiu $2,$fp,40

move $6,$2

lw $2,%got($LC3)($28)

nop

addiu $5,$2,%lo($LC3)

lw $4,36($fp)

lw $2,%call16(__isoc99_fscanf)($28)

nop

move $25,$2

.reloc 1f,R_MIPS_JALR,__isoc99_fscanf

1: jalr $25

nop

lw $28,16($fp)

sw $2,32($fp)

li $2,1 # 0x1

sw $2,28($fp)

$L5:

lw $3,32($fp)

li $2,-1 # 0xffffffffffffffff

beq $3,$2,$L11

nop

lw $2,28($fp)

nop

beq $2,$0,$L3

nop

lw $3,44($fp)

lw $2,40($fp)

nop

mult $3,$2

lw $2,24($fp)

mflo $3

addu $2,$2,$3

sw $2,24($fp)

$L3:

lw $2,36($fp)

nop

bne $2,$0,$L8

nop

b $L7

nop

$L11:

nop

$L7:

lw $2,28($fp)

nop

beq $2,$0,$L9

nop

lw $2,44($fp)

lw $3,24($fp)

nop

addu $2,$3,$2

sw $2,24($fp)

$L9:

lw $4,36($fp)

lw $2,%call16(fclose)($28)

nop

move $25,$2

.reloc 1f,R_MIPS_JALR,fclose

1: jalr $25

nop

lw $28,16($fp)

lw $5,24($fp)

lw $2,%got($LC4)($28)

nop

addiu $4,$2,%lo($LC4)

lw $2,%call16(printf)($28)

nop

move $25,$2

.reloc 1f,R_MIPS_JALR,printf

1: jalr $25

nop

lw $28,16($fp)

move $2,$0

move $sp,$fp

lw $31,52($sp)

lw $fp,48($sp)

addiu $sp,$sp,56

j $31

nop

.set macro

.set reorder

.end main

.size main, .-main

Please, please upvote and ask your doubts in the comments.

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote