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

IF statement in assembly

I'm wondering, Does assembler support if staments? (like a C program) Tried something very simple:

org 0h
sjmp BEGIN

org 50h
BEGIN:
	IF R0 == #45
		MOV A, #54
		CPL A
	ELSE
		MOV A, #45
		CPL A
	ENDIF
END

After building and enter debug mode I found this code seems to be a #ifdef like statement instead of a C like if-then-else statement. Did I do something wrong or the assembler does no support if statement?

Parents
  • I using a AT89C51, it got just 4kbytes on-chip rom memory. One of the goals is to make the circuit smaller then I don't use external ROM. The program need to do lots of stuff (until now I got ~1000 lines of pure code). I think writing in C would make the program too big for 4kbytes of ROM. Of course I would like to write in C, much easier, but sometimes we need to do some sacrifice...Before you say: No I can't change the uController! :(

Reply
  • I using a AT89C51, it got just 4kbytes on-chip rom memory. One of the goals is to make the circuit smaller then I don't use external ROM. The program need to do lots of stuff (until now I got ~1000 lines of pure code). I think writing in C would make the program too big for 4kbytes of ROM. Of course I would like to write in C, much easier, but sometimes we need to do some sacrifice...Before you say: No I can't change the uController! :(

Children
  • "I think writing in C would make the program too big for 4kbytes of ROM."

    Not necessarily.
    Sure, if you write bad, inefficient 'C' it will be bloated - but if you write it carefully, with due consideration for the underlying architecture, and take full advantage of all the optimisation options, there is absolutely no reason at all why you shouldn't use C51 to write useful programs in under 4K.

    Search this forum, and the C51 Manual for tips on writing efficient 'C' for the 8051.

  • "I using a AT89C51 ... One of the goals is to make the circuit smaller then I don't use external ROM ... No I can't change the uController!"

    Why not?

    You say you're making the circuit smaller - that must mean a hardware re-design, so why not take advantage of that and choose a variant with more on-chip ROM?!

    You could fit about three modern QFP derivatives with probably >64K flash each into the space of a 40-pin DIP! - not to mention the external ROM!!

  • It's easy to change de project now, but my teacher will not allow it. I did buy a 32kbytes chip on past week(before start writing the code), but if you are a teacher you must understand that he wants to learn assembly(or he is just being sarcastic hehehe), yesterday I past all day optimizing the code, I did remove a lot of useless staff.

  • "It's easy to change de project now, but my teacher will not allow it ... I did remove a lot of useless staff."

    Was that teacher amongst the useless staff?!... ;-)

  • heheheh Thank God he does not look the code...he would complaint a lot!!!

  • heheheh Thank God he does not look the code...he would complaint a lot!!!

    In doing so, he will do you a favor. I GUESS you are going to school in order to eventually get a job and, in that case, it is not "complain a lot" but "go to the unemployment line".

    Erik