--%>

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 : C-C++ interfaces into WLS JMS Normal 0

    Normal 0 false false

  • Q : What is UNIX Explain, what is UNIX?

    Explain, what is UNIX?

  • Q : Explain Functional programming

    Functional programming: It is a style of programming related with languages like Haskell. The functional programming languages are more strongly tied to a mathematical concept of `function' than imperative programming languages. This makes it simpler

  • Q : What is an Unchecked exception

    Unchecked exception: An exception for which it is not needed to give a local try statement or to propagate through a throws clause stated in the method header. An exception which is not handled will cause program annihilation when it is thrown.

  • Q : What is Leverage Model-Based Design

    Leverage Model-Based Design: Model-based design provides useful hints of how a large system can be reduced so that its state space becomes searchable. If not inherently visible in the design (for example, by means of using a “State” design

  • Q : State Space Reduction in Java PathFinder

    State Space Reduction: JPF is a so-called explicit-state model checker, as it enumerates all visited states, and therefore suffers from the state explosion problem inherent in analyzing large programs. It also contains garbage collection, because a ty

  • Q : Explain Structured programming

    Structured programming: It is a style of programming generally related with languages like FORTRAN, C, Pascal and so forth. Employing structured programming methods, a problem is frequently resolved employing a divide and conquer approach like stepwis

  • 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 : Describe Locale Locale : The details

    Locale: The details which are dependent on conventions and customs approved by a specific country or culture. Within programs, this influences issues like number and date formatting, for example. Designers of classes must be sensitive to the locale-sp

  • Q : Define White space White space :

    White space: Characters employed to make visual spacing in a program. White spaces comprise space, tab, carriage return and the line feed characters.