Question: How do I convert this C-code to MIPS Assembly language? #include #include // leaf function - convert decimal to binary in string void toBinary(int num,
How do I convert this C-code to MIPS Assembly language?
#include#include
// leaf function - convert decimal to binary in string void toBinary(int num, char strNum[])
{ int i;
for(i = 7; i >= 0; i--){ // index 7 is the LSB (bit-0) int rem = num & 0x01; // retrieve remainder num = num >> 1; // shift right by 1 bit (== divide by 2) } } strNum[i] = '0' + rem; // ascii '0' is decimal 48, '1' is 49
// non-leaf function convert decimal (negative) to 2s complement in string void twosComplement(int num, char strNum[])
{ int i, absolute, carry; absolute = abs(num);
toBinary(absolute, strNum); // call toBinary for absolute value (positive) printf("absolute value = %s ", strNum); // flip, complement for(i = 7; i >=0; i--){ if(strNum[i] == '0') elsestrNum[i] = '1';
} strNum[i] = '0'; printf("1's complement = %s ", strNum); // add 1 for(i = 7, carry = 1; i >=0 && carry; i--){ // if carry is 0, stop!! int sum = (strNum[i] - 48) + carry; // ascii '0' is decimal 48, '1' is 49
strNum[i] = '0' + (sum & 0x01); // logical and } carry = (sum >> 1) & 0x01; // shift right by 1 bit (divide by 2) & logical and
printf("2's complement = %s ", strNum); } int main()
{ char Binary[10] = ""; int num; printf("Enter a number: "); scanf("%d", &num); if(num > 127 || num <= -128) { printf("Out of Range for 8-bit singed Binary"); return 0; }
if(num >= 0) // positive or 0 toBinary(num, Binary);
else // negative to two's complement twosComplement(num, Binary);
printf("%d's 8-bit Binary Representation is %s ",num , Binary); return 0; }
Step by Step Solution
There are 3 Steps involved in it
1 Expert Approved Answer
Step: 1 Unlock
Question Has Been Solved by an Expert!
Get step-by-step solutions from verified subject matter experts
Step: 2 Unlock
Step: 3 Unlock
