--%>

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 : Data types of LONG To define the data

    To define the data types such as LONG, INT, SHORT, CHAR write a program?

  • Q : State HyperText Transfer Protocol

    HyperText Transfer Protocol: The HyperText Transfer Protocol (abbreviated as HTTP) is a set of rules stated to enable a Web client (that is, browser) to interact with the Web server.

  • Q : Explain shell variables Explain the

    Explain the shell variables?

  • Q : Describe Uninitialized variable

    Uninitialized variable: It is a local variable which been declared, however has had no value allocated to it. The compiler will warn of variables that are employed before being initialized.

  • Q : What is Runtime stack Runtime stack :

    Runtime stack: It is a stack structure maintained by the Java Virtual Machine which records that methods are presently being executed. The most of late entered technique will be at the top of the stack and the main technique of an application will be

  • Q : What is Native method Native method :

    Native method: In native method, the method is written in a language other than Java, however accessible to a Java program. Native methods are far away from the scope of this definition.

  • Q : Explain State State : The objects are

    State: The objects are said to possess state. The present state of an object is symbolized by the joint values of its attributes. Protecting the state of an object from unsuitable inspection or modification is a significant aspect of class design and

  • Q : How can Login dialog accessed The web

    The web page I am testing displays the Login dialog. How can I access this dialog?

  • Q : Calculating Tax on an Order in SQL

    Process the following steps to make a procedure to compute the tax on an order. The BB_TAX table includes the states which need taxes to be submitted for Internet sales. When the state is not listed in the table, then no tax must be accessed on any order. Shopper&rsqu

  • Q : Software Quality Assurance and Software

    What real-life experience have you gained along with Software Quality Assurance as well as Software Quality Control?