QUESTION 1
Convert the following C++ program into an x86 assembly language program.
Make sure to use your “Chapter 8” understanding of advanced functions, parameter passing, and local variables.
Post ONLY your ASM file here to Blackboard when complete.#include
using namespace std;
int IsSemifauxtrifactored(int value)
{
// Return 1 if a numbers factors/divisors from (value – 1) to 1 sum up to half the number value
// Return 0 otherwise
// A number is called “semifauxtrifactored” if its summed factors/divisors equal half the number itself
// Integer division is used, so remainders on the halving can be lost
// Thats why…
// 9 is a semifauxtrifactored number
// 9 cut in half with integer division is (9 / 2) = 4
// 9 % 8 -> 1
// 9 % 7 -> 2
// 9 % 6 -> 3
// 9 % 5 -> 4
// 9 % 4 -> 1
// 9 % 3 -> 0 FACTOR!
// 9 % 2 -> 1
// 9 % 1 -> 0 FACTOR!
// 9 is a semifauxtrifactored number since its factors (1 + 3) equal half the number (4)
// 6 is a normal number
// 6 cut in half with integer division is (6 / 2) = 3
// 6 % 5 -> 1
// 6 % 4 -> 2
// 6 % 3 -> 0 FACTOR!
// 6 % 2 -> 0 FACTOR!
// 6 % 1 -> 0 FACTOR!
// 6 is a normal number since its factors (1 + 2 + 3) do not equal half the number (3)
}
int main()
{
cout << "Enter a value: ";
int value;
cin >> value;
value = IsSemifauxtrifactored(value);
if (value == 1)
{
cout << "The number is semifauxtrifactored!";
}
else
{
cout << "The number is normal";
}
cout << endl;
system("PAUSE");
}
