Develop a word processing program in MIPS assembly. Your program must be able to form a new text from the original text by replacing a specific sequence of characters with another sequence of characters. Your program must use 4 global variables for the buffers: buffTxtI – 50 bytes; buffTxtF – 100 bytes; txt1 – 10 bytes and txt2 – 10 bytes; a global variable tabSJ – 402 bytes, an array used by the auxiliary functions split and join of the function fill; To perform this task the following functions must be designed. a) seize() Allows storing a text in a buffer buffTxtI (50 bytes), a word in the buffer txt1, and another word in the buffer txt2. The two buffers txt1 and txt2 have a maximum capacity of 10 bytes including the space for the last null character (`�`). The text can contain line breaks, spaces, and other non-printable characters. The end of the entry must be indicated by the entry `n`. The last `n` symbol at the end of the input must be replaced by the null character (`�`). After entering the text, the user must specify the two words. As soon as the overflow of the input buffer is detected, the program execution is terminated by displaying the explanatory message (execution abortion). The text buffers must accept a maximum of 10 characters including the null character (use syscall). b) replace(txt1, txt2) This function takes 2 parameters, the texts (addresses), and by replacing the txt1 with the txt2, forms a new text which must be stored in the bufferTxtF. The replace function must use as a minimum the two auxiliary functions: 1) split(txtInit, sep1) This function takes two parameters, a text to transform into an array of text and a separator (text) which is used as a unit to split the initial text. initial text. The result of the processing should be communicated by table tabSJ where the first element must specify the number of substrings from a substring resulting from a cutting of txtInit to the separator sep followed by the addresses of these substrings (start-end). Example of the desired operation: if the initial text is "abXYcdXYef" and the separator is "XY", the array tabSJ must contain [3, start-end of the piece "ab", "cd", "ef"] or the substrings are represented by their start and end addresses in the textInit. 2) join(sep2) parameter 1 – address of the text to be joined between the substrings specified in tabSJ. The join function must call the auxiliary function adr4 copy(adr1, adr2, adr3) ensuring that this copy could be done (bufferTxtF has enough free space). i) adr4 copy(adr1, adr2, adr3) performs the copy of the block of bytes starting at addr1 to address adr2 from bufferTxtI into bufferTxtF from address adr3. address adr3. The address of the free part of the buffTxtF buffer is returned as a value (addr4). You can create any additional functions that you consider useful in the realization of your program. your program. Here is the partial outline of the program: memory segment containing global data —————————————– .data # buffers buffTxtI: .space 50 … # messages to display msgD: .asciiz "Input buffer overflow." … # memory segment containing the code .text main: jal enter # display the content of the buffer buffTxtI li $v0,4 the $a0,buffTxtI syscall … li $v0,10 # terminate the program syscall #enter function – don`t forget the comments! enter: … #function fill fill: … #split function split: … #join function join: … #copy function copy: … —————————————– Some execution scenarios : Input 2: Initial text: XXabXXcd Word to replace: XX Replacement word : YY Output 2: XXabXXcd YYabYYcd Input 3: Initial text: There are two cats and two dogs. Word to replace: two Replacement word: ten Output 3: There are two cats and two dogs. There are ten cats and ten dogs. Input 4: Initial text: There are two cats and two dogs. Word to replace : Replacement word : Output 4: There are two cats and two dogs. There are two cats and two dogs. If one or both of the two separator words are empty (""), the initial string must be copied as is into the buffer buffTxtF by the replace function.