C Programming - Functions - Discussion
Discussion Forum : Functions - Find Output of Program (Q.No. 1)
1.
What will be the output of the program in 16 bit platform (Turbo C under DOS)?
#include<stdio.h>
int main()
{
int fun();
int i;
i = fun();
printf("%d\n", i);
return 0;
}
int fun()
{
_AX = 1990;
}
Answer: Option
Explanation:
Turbo C (Windows): The return value of the function is taken from the Accumulator _AX=1990.
But it may not work as expected in GCC compiler (Linux).
Discussion:
43 comments Page 5 of 5.
Abhayraj said:
1 decade ago
Accumulator, data transfer bet memory locations are used in micro-controllers, IC chips, devices like washing machine & so many.
These instructions are namely used in hardware prog -ALP (assembly prog lang). AM I right ?
These instructions are namely used in hardware prog -ALP (assembly prog lang). AM I right ?
Adu said:
1 decade ago
I have no idea why people call it accumulator what I think is this: There are many registers in the cpu and %EAX is just one among them which is used to place return values and store the syscall number while performing a syscall.
Look at this
int foo(){
__asm__("mov $0xff, %eax;");
}
main(){
printf("%d",foo());
}
Here I have put a inline asm instruction in it and what it does is moving the value 255 to register eax and you get 255(0xff) printed in main :).
That means EAX register is the place where the return value is stored.. instead of 'return value' they placed the value in the AX register directly(by _AX=blabla) ..nothing much.. this is what I think ..may be wrong.
Look at this
int foo(){
__asm__("mov $0xff, %eax;");
}
main(){
printf("%d",foo());
}
Here I have put a inline asm instruction in it and what it does is moving the value 255 to register eax and you get 255(0xff) printed in main :).
That means EAX register is the place where the return value is stored.. instead of 'return value' they placed the value in the AX register directly(by _AX=blabla) ..nothing much.. this is what I think ..may be wrong.
Moon said:
1 decade ago
Why this is not working? if we use any kind of variable assume 'p' instead of _AX then also the result is 0. Why it is? please give an explanation of this program.
Post your comments here:
Quick links
Quantitative Aptitude
Verbal (English)
Reasoning
Programming
Interview
Placement Papers