We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
here are few questions which are troubling me.. kindly help...
1) Why should we always start 8051 program with the following piece of code? (starting code) org 0h ljmp 8000h org 8000h
2) since the address location 0000h is eprom.. we cant save data on that address.. then where is the starting code(above said code) saved??
3)what happens if we remove starting code and end statement in the end of program??
4) why only direct addressing is alllowed for push and pop instruction....
waiting for answers....
ORG 0 is ROM reset location In some simulators its not necessary to write org,
ljmp is to jump over the IVT vector table where the isrs of varoius interrupts are mentioned.
For the control to go to 'main', we can write 'ljmp main' instead of mentioning the address where the program starts.
In assembly program, there is no 'main' as such. It can be used label to point where the actual program starts, Suppose, IVT ends at 0030, then code could be
org 0030h main: mov ... ...
Am not sure about 8000h, In case of using isrs, we use ljmp, else not necessary. On reset, all interrupts are disabled, and enabled if needed using IE. Eg. Timer 0 isr is at 000B. to use that, it is accessed as 'org 000B' followed by ... other stmts i should have mentioned whether in simulator or actual 8051. That doesnt mean you can use such unparliamentarian language, excuse me, In cases like generating a square wave, we use timer, count till end , reload value, again count till end number, reload,... it goes on in a loop, the last stmt in the loop is ret but while checking your program on a simulator, if end stmt is not used, it generates an error, Else, end stmt ignores all further stmts after that,
"ORG 0 is ROM reset location"
See Drew's post - it is not necessarily ROM!
"In some simulators its not necessary to write org"
It has nothing to do with simulators - it is an Assembler directive!
"ljmp is to jump over the IVT"
Not necessarily
"For the control to go to 'main', we can write 'ljmp main' instead of mentioning the address where the program starts."
Assuming that a valid definition of 'main' already exists, and is the address where the program starts.
"In assembly program, there is no 'main' as such."
This is meaningless - if you write your assembly program with a 'main', then it has a 'main'; if you don't, then it doesn't!
This is meaningless
Andy, I posted things to the same effect (all wrong) about this individuals previous post, And his nect post has no reference, just more idiocy. This makes me doubt going in detail will have ANY effect.
I suggest we restrict all responses to hem raj to just the ictaliziced pharse
Erik
was just giving a try seems like i got the words all mixed up, Assembler for simulator... sorry for that
In assembly program, there is no 'main' as such."
"This is meaningless - if you write your assembly program with a 'main', then it has a 'main'; if you don't, then it doesn't!" that is same i meant, to write 'main', we write it as a label,
ok tell me why do we use ljmp? is it not to bypass the IVT? did i use 'jump over',
ok resigned,