Hi all. I am facing this problem. If I am using following syntax, logically it is ok, but it is generating a wrong asm code via keil C51. Problem 1
ACC = ACC + B;
ADD A, B;
MOV A, B; ADD A, B;
ACC = z; B = 0; if(ACC<100) ...
MOV A, z(0X0A) CLR A; MOV B, A;
OK. This means compiler is unnecessarily increasing the no. of instructions. isn't it? Anyway thanks for that. What about generating DA A instruction via C code.
As Jon says, forget about assembler. You are using a 'C' compiler. This should give you a starting point: int a=5,b=7; char buff[10]; a+=b; sprintf(buff,"%d",a); LCD_print(buff);
What about generating DA A instruction via C code. What about hammering a nail in with a screwdriver? ... same thing Erik
"OK. This means compiler is unnecessarily increasing the no. of instructions. isn't it?" No. It means that you are using totally the wrong tool. Using a high level language means that you have delegated the choice of the specific machine instructions & registers to the compiler. If you need to use specific machine instructions & registers then you must use assembler! You can't have it both ways; you can't have your cake and it eat it! There is no way to force any 'C' compiler to generate any specific machine instruction(s). That's the whole point: http://www.8052.com/forum/read.phtml?id=68927
Thanks to all.