Learning Objectives: ● Create modular code and interface with unfamiliar modularized code
The Task
In this project, you will be writing a program that receives a string of characters via the UART, checks if this
string is a palindrome, and then uses a print function to print either “Yes” or “No”. A palindrome sequence of
characters (typically a word or phrase) that is the same both forwards and backwards. For this project, strings
will be terminated using a period (‘.’). You may assume that a string will contain at least one character in
addition to a period. You will not need to handle empty strings or strings with only a period. Your program
should be able to handle multiple strings sent one after another or concatenated together. For example, the
string: “abba. data.” should print “Yes” followed by “No” on the next line. Spaces should be ignored when
checking for a palindrome and the palindrome should not be case sensitive. For example, “A nut for a jar of
tuna.” would be considered a palindrome.
Print Function
A skeleton PLP project file is available to download on Blackboard. The PLP project includes a second ASM file
titled, project3_print.asm. This ASM file contains the print function used in this project. PLPTool concatenates all
ASM files within a PLP project into a single location in memory (unless additional .org statements have been
added to specify different location for code). No changes to project3_print.asm should be made.
When called, depending on the value in register $a0, the following string will be displayed on the simulated
UART device’s output. If $a0 contains a zero then “No” will be displayed and if $a0 contains a non-zero value
(e.g. one) then “Yes” will be displayed. The print function is called using the following instruction:
call project3_print
To use the print function, your PLP program needs to initialize the stack pointer ($sp) before performing the
function call (or any other operations involving the stack pointer). For this reason, the skeleton project file
includes an initialization that sets the stack pointer to 0x10fffffc (the last address of RAM).