reads a line of text and tests whether it is a palindrome


palindrome.asm -- reads a line of text and tests whether it is a palindrome. ## Register usage: ## $t1 - A. ## $t2 - B. ## $t3 - the character *A. ## $t4 - the character *B. ## $v0 - syscall parameter / return values. ## $a0 - syscall parameters. ## $a1 - syscall parameters. .globl test_loop .globl length_loop .globl string_space .text main: # SPIM starts by jumping to main. # read the string S: la $a0, string_space li $a1, 1024 li $v0, 8 # load "read_string" code into $v0. syscall la $t1, string_space # A <- S. la $t2, string_space ## we need to move B to the end length_loop: # of the string: lb $t3, ($t2) # load the byte *B into $t3. beqz $t3, end_length_loop # if $t3 == 0, branch out of loop. addu $t2, $t2, 1 # otherwise, increment B, b length_loop # and repeat the loop. end_length_loop: subu $t2, $t2, 2 ## subtract 2 to move B back past # the '\0' and '\n'. test_loop: bge $t1, $t2, is_palin # if A >= B, it is a palindrome. lb $t3, ($t1) # load the byte *A into $t3, lb $t4, ($t2) # load the byte *B into $t4. bne $t3, $t4, not_palin # if $t3 != $t4, not a palindrome. # Otherwise, addu $t1, $t1, 1 # increment A, subu $t2, $t2, 1 # decrement B, b test_loop # and repeat the loop. is_palin: ## print the is_palin_msg, and exit. la $a0, is_palin_msg li $v0, 4 syscall b exit not_palin: la $a0, not_palin_msg ## print the is_palin_msg, and exit. li $v0, 4 syscall exit: ## exit the program: li $v0, 10 # load "exit" into $v0. syscall # make the system call. ## Here is where the data for this program is stored: .data string_space: .space 1024 # set aside 1024 bytes for the string. is_palin_msg: .asciiz "The string is a palindrome.\n" not_palin_msg: .asciiz "The string is not a palindrome.\n" ## end of palindrome.asm

 

 

   Related Questions in Programming Languages

  • Q : Explain the way to start a Web Service

    Explain the way to start a Web Service.

  • Q : Explain VeriSoft VeriSoft (Godefroid,

    VeriSoft (Godefroid, 2005) is a model checker for C and C++; other languages can be used, but components in other languages are treated as black boxes. VeriSoft has been used to find defects in very large telecommunications programs (Chandra, Godefroi

  • Q : Interface accessibility modifier Inside

    Inside the interface accessibility modifier we can use for methods?

  • Q : What is Static initializer Static

    Static initializer: An initializer prefixed with ‘static’ reserved word. The static initializer is stated outside the methods of its enclosing class, and might access only the static fields and methods of its enclosing class.

  • Q : What are tools require View XHTML

    What are tools require View XHTML Documents?

  • Q : Illustrates the parts of an XML

    Illustrates the parts of an XML document are case-sensitive.

  • Q : Define Short-circuit operator

    Short-circuit operator: It is an operator in which only as a lot of operands are computed as are required to determine the final outcome of the operation. The logical-and (&&) and logical-or (||) operators are most general illustration, though

  • Q : Define Undeniable Signature Scheme

    Define Undeniable Signature Scheme?

  • Q : Define Factoring Problem Factoring

    Factoring Problem: Factoring is the action of dividing an integer into a set of smaller integers (or factors) which, when multiplied altogether, form the unique integer. For illustration, the factors of 15 are 3 and 5; the factoring trouble is to find

  • Q : Define the term Catching exceptions

    Catching exceptions: Exceptions are caught in the catch clause of the try statement. Catching an exception provides the program a chance to recover from the trouble or attempt a repair for whatsoever caused it.

©TutorsGlobe All rights reserved 2022-2023.