I tried previous answers, but none of them worked, here is the question: Write a
ID: 3683642 • Letter: I
Question
I tried previous answers, but none of them worked, here is the question: Write an ARM assembly language which accepts an integer and returns a string which is the hexadecimal representation of the integer. The signature of the routine is: char * int2hex( int conv ) ; The input is a 32 bit integer. The output is a pointer to a character string of the format 0Xdddddddd. Do not suppress leading zeroes. The C program is:
#include #include extern char * int2hex( int convert ) ;
int main( int argc, char * argv[] ) {
int convert = 1194684 ;
char * result ; result = int2hex( convert ) ;
printf( "Integer to hex string: %s ", result ) ;
}
A string in C is terminated by a null byte (a byte of zero). You will need to use the shift instructions. You need to separate the integer into 4 bit sections each representing the individual hex digits. These need to be turned into printable characters. You need to ‘adjust’ the resulting values for the digits A-F. Use the strb instruction and an auto increment of 1 since you are storing bytes into memory. Use the malloc library routine to obtain space for the character string (11 bytes: 2 for 0x, 8 for the hex digits, and one for the null byte).
Explanation / Answer
#include <stdio.h>
#include <stdlib.h>
char arr[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
char array[20];
void main() {
int convert = 1194684 ;
int j,k,i=0;
while(convert!=0)
{
j=convert%16;
array[i]=arr[j];
printf("%c",array[i]) ;
k=convert/16;
convert=k;
i=i+1;
}
for(int m=i;m<=0;m--)
printf("%c",array[m]) ;
}