hi guys I need help to make this assembly code work I dont know why using persay
ID: 3677836 • Letter: H
Question
hi guys I need help to make this assembly code work I dont know why using persay 1 and 2 as my input I get back
Enter two integer numbers : 1 2
1.000000 + 2.000000 = 0.007813
1.000000 - 2.000000 = -0.007813
1.000000 * 2.000000 = 0.000000
1.000000 / 2.000000 = 0.000000
#include <stdio.h>
int main() {
float arg1, arg2, add, sub, mul, div ;
printf( "Enter two integer numbers : " );
scanf( "%f%f", &arg1, &arg2 );
__asm__ ( "fldl %1 "
"fldl %2 "
"faddp "
: "=&t" (add) : "m" (arg1), "m" (arg2) ) ;
__asm__ ( "fldl %2 "
"fldl %1 "
"fsubp "
: "=&t" (sub) : "m" (arg1), "m" (arg2) ) ;
__asm__ ( "fldl %1 "
"fldl %2 "
"fmulp "
: "=&t" (mul) : "m" (arg1), "m" (arg2) ) ;
__asm__ ( "fldl %2 "
"fldl %1 "
"fdivp "
: "=&t" (div) : "m" (arg1), "m" (arg2) ) ;
printf( "%f + %f = %f ", arg1, arg2, add );
printf( "%f - %f = %f ", arg1, arg2, sub );
printf( "%f * %f = %f ", arg1, arg2, mul );
printf( "%f / %f = %f ", arg1, arg2, div );
return 0 ;
}
Explanation / Answer
c program
#include <stdio.h>
int main()
{
float arg1, arg2, add, sub, mul, div ;
printf( "Enter two integer numbers : " );
scanf( "%f%f", &arg1, &arg2 );
__asm__ ( "fldl %1 "
"fldl %2 "
"faddp "
: "=&t" (add) : "m" (arg1), "m" (arg2) ) ;
__asm__ ( "fldl %2 "
"fldl %1 "
"fsubp "
: "=&t" (sub) : "m" (arg1), "m" (arg2) ) ;
__asm__ ( "fldl %1 "
"fldl %2 "
"fmulp "
: "=&t" (mul) : "m" (arg1), "m" (arg2) ) ;
__asm__ ( "fldl %2 "
"fldl %1 "
"fdivp "
: "=&t" (div) : "m" (arg1), "m" (arg2) ) ;
printf( "%f + %f = %f ", arg1, arg2, add );
printf( "%f - %f = %f ", arg1, arg2, sub );
printf( "%f * %f = %f ", arg1, arg2, mul );
printf( "%f / %f = %f ", arg1, arg2, div );
return 0 ;
}
output:
Enter two integer numbers : 1 2
1.000000 + 2.000000 = 0.007813
1.000000 - 2.000000 = -0.007813
1.000000 * 2.000000 = -0.000000
1.000000 / 2.000000 = -0.000000
Assembly Code to generate
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.