This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Generating DA A via C code.

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;
This statement works fine with C.
Now I thought it will generate
ADD A, B;
but it is generating
MOV A, B;
ADD A, B;

Problem 2
his C code also involving ACC without my wish.
 ACC = z;
B = 0;
if(ACC<100)
...
his is generating following asm code
MOV A, z(0X0A)
CLR A;
MOV B, A;
this is not what i want.
if I interchange the first 2 lines it works OK. Why so?

Problem 3
I want the DA A command to take place in my code after the addition what I will have to do?
As I want to convert the result in decimal and form that I want to show it on LCD. (DEC to ASCII is quite simple)
I tried lot of C code variations which show correct result as far as only C is concerned but they arte generating absurd AS code and nothing is working.
Please suggest something.

Parents
  • "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

Reply
  • "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

Children