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

Write a method in basic MIPS assembly (no pseudo instructions) which determines

ID: 3744371 • Letter: W

Question

Write a method in basic MIPS assembly (no pseudo instructions) which determines whether or not an input string is a palindrome.

.data

String0:

.asciiz ""

String1:

.asciiz "a"

String2:

.asciiz "b"

String3:

.asciiz "aba"

String4:

.asciiz "abba"

String5:

.asciiz "baab"

String6:

.asciiz "ababa"

String7:

.asciiz "aabba"

String8:

.asciiz "abbab"

Is:

.asciiz" is a palindrome. "

IsNot:

.asciiz" is not a palindrome. "

.text

la  $a0, String0

jalCheckPalindrome

addi    $a1, $v0, 0

jalWriteResult

la  $a0, String1

jalCheckPalindrome

addi    $a1, $v0, 0

jalWriteResult

la  $a0, String2

jalCheckPalindrome

addi    $a1, $v0, 0

jalWriteResult

la  $a0, String3

jalCheckPalindrome

addi    $a1, $v0, 0

jalWriteResult

la  $a0, String4

jalCheckPalindrome

addi    $a1, $v0, 0

jalWriteResult

la  $a0, String5

jalCheckPalindrome

addi    $a1, $v0, 0

jalWriteResult

la  $a0, String6

jalCheckPalindrome

addi    $a1, $v0, 0

jalWriteResult

la  $a0, String7

jalCheckPalindrome

addi    $a1, $v0, 0

jalWriteResult

la  $a0, String8

jalCheckPalindrome

addi    $a1, $v0, 0

jalWriteResult

addi    $v0, $0, 10

syscall

WriteResult:

addi    $sp, $sp, -8

sw  $a0, 0($sp)

sw  $v0, 4($sp)

addi    $v0, $0, 4

syscall

beq$a1, $0, PrintNot

la  $a0, Is

syscall

j   WriteDone

PrintNot:

la  $a0, IsNot

syscall

WriteDone:

lw  $v0, 4($sp)

lw  $a0, 0($sp)

addi    $sp, $sp, 8

jr  $ra

CheckPalindrome:

# $a0 – string address

# $v0 – result (1 = is a palindrome, 0 is not)

# your code goes here

Explanation / Answer

.file 1 "" .section .mdebug.abi32 .previous .nan legacy .module fp=32 .module nooddspreg .abicalls .rdata .align 2 $LC0: .ascii "Enter a string to check whether it is palindrome or not:" .ascii " " .align 2 $LC1: .ascii "%s" .align 2 $LC2: .ascii "Entered string is palindrome" .align 2 $LC3: .ascii "Entered string is not palindrome" .text .align 2 .globl main .set nomips16 .set nomicromips .ent main .type main, @function main: .frame $fp,144,$31 # vars= 112, regs= 2/0, args= 16, gp= 8 .mask 0xc0000000,-4 .fmask 0x00000000,0 .set noreorder .cpload $25 .set nomacro addiu $sp,$sp,-144 sw $31,140($sp) sw $fp,136($sp) move $fp,$sp .cprestore 16 movz $31,$31,$0 sw $0,28($fp) sw $0,32($fp) lw $2,%got($LC0)($28) nop addiu $4,$2,%lo($LC0) lw $2,%call16(printf)($28) nop move $25,$2 .reloc 1f,R_MIPS_JALR,printf 1: jalr $25 nop lw $28,16($fp) addiu $2,$fp,36 move $5,$2 lw $2,%got($LC1)($28) nop addiu $4,$2,%lo($LC1) lw $2,%call16(__isoc99_scanf)($28) nop move $25,$2 .reloc 1f,R_MIPS_JALR,__isoc99_scanf 1: jalr $25 nop lw $28,16($fp) sw $0,24($fp) b $L2 nop $L5: lw $2,24($fp) addiu $3,$fp,24 addu $2,$3,$2 lb $2,12($2) nop beq $2,$0,$L12 nop lw $2,32($fp) nop addiu $2,$2,1 sw $2,32($fp) lw $2,24($fp) nop addiu $2,$2,1 sw $2,24($fp) $L2: lw $2,24($fp) nop slt $2,$2,100 bne $2,$0,$L5 nop b $L4 nop $L12: nop $L4: sw $0,24($fp) b $L6 nop $L8: lw $2,24($fp) addiu $3,$fp,24 addu $2,$3,$2 lb $3,12($2) lw $2,32($fp) nop addiu $4,$2,-1 lw $2,24($fp) nop subu $2,$4,$2 addiu $4,$fp,24 addu $2,$4,$2 lb $2,12($2) nop bne $3,$2,$L7 nop lw $2,28($fp) nop addiu $2,$2,1 sw $2,28($fp) $L7: lw $2,24($fp) nop addiu $2,$2,1 sw $2,24($fp) $L6: lw $3,24($fp) lw $2,32($fp) nop slt $2,$3,$2 bne $2,$0,$L8 nop lw $3,32($fp) lw $2,28($fp) nop bne $3,$2,$L9 nop lw $2,%got($LC2)($28) nop addiu $4,$2,%lo($LC2) lw $2,%call16(printf)($28) nop move $25,$2 .reloc 1f,R_MIPS_JALR,printf 1: jalr $25 nop lw $28,16($fp) b $L10 nop $L9: lw $2,%got($LC3)($28) nop addiu $4,$2,%lo($LC3) lw $2,%call16(printf)($28) nop move $25,$2 .reloc 1f,R_MIPS_JALR,printf 1: jalr $25 nop lw $28,16($fp) $L10: move $2,$0 move $sp,$fp lw $31,140($sp) lw $fp,136($sp) addiu $sp,$sp,144 j $31 nop .set macro .set reorder .end main .size main, .-main

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