Levels Tought:
Elementary,Middle School,High School,College,University,PHD
Teaching Since: | Apr 2017 |
Last Sign in: | 10 Weeks Ago, 6 Days Ago |
Questions Answered: | 4870 |
Tutorials Posted: | 4863 |
MBA IT, Mater in Science and Technology
Devry
Jul-1996 - Jul-2000
Professor
Devry University
Mar-2010 - Oct-2016
Write an ARM assembly language program which will replace a character in a string with another specified character and print the resulting string. You should return the pointer to the new string to the C program
The assembly subroutine’s definition is
extern char * subit( char * string, char this_c, char that_c )
where the first parameter is the pointer to the string to examine and replace characters,
the second parameter is the character to replace,
the third parameter is the replacement character.
The C driver code is below.
#include <stdlib.h>
#include <stdio.h>
extern char * subit( char *string, char this_c, cha that_c ) ;
int main( int argc, char *argv[] )
{
char this_c= ‘e’ ;
char that_c = ‘x’ ;
char orgstr[] = "The quick brown fox jumped over the lazy dog" ;
char * result ;
result = subit( orgstr, this_c, that_c ) ;
printf( “old: %sn”, orgstr ) ;
printf( “new: %sn”, result ) ;
exit( 0 ) ;
}
To obtain space for the new string you need to use the library routine malloc. This requires an input of the number of bytes to obtain, in register a1, and returns a pointer to the space requested, in register a1.
For example, to get a 17 byte buffer:
mov a1, #17
bl malloc
On return, register a1 will have a pointer to the memory space allocated.
You will need to use the previous assignment’s code to determine the actual string length.
You must use your string length function as a function.
-----------