Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
04/16/08 11:36
Read: times


 
#153456 - Now I understand. Far more interesting.
Responding to: ???'s previous message
Uttam Bansal said:
i dont have an assembler but i am making one for 8052.


You have looked up the opcode mnemonic, and have a list of legal modes.
You have parsed the addressing mode (expression in single operand).
You evaluate the expression in the operand.
You have the location counter of your current instruction and you know the size of your instruction (2) from your mode table.

You calculate the offset as ( xpr - (PC + 2)) in the same way that you would calculate a relative branch instruction.

A branch must be -0x80 to +0x7f to be legal.
A page must be +0x00 to +0x7ff to be legal.

You report an addressing error in the same way as you would report a branch out of range error. You continue assembling with PC += 2.

If legal then the top 3 bits go into the opcode, the bottom go into the operand byte.

Are you making absolute assembler or one with linkable objects ?

David.

List of 42 messages in thread
TopicAuthorDate
Problem with ACALL instruction            01/01/70 00:00      
   It is an absolute paged call...            01/01/70 00:00      
      my question is different            01/01/70 00:00      
         The Opcode is Selected...            01/01/70 00:00      
   not using an assembler?            01/01/70 00:00      
      still confused...            01/01/70 00:00      
         Not possible, use LCALL            01/01/70 00:00      
            Why should anyone WANT to know the hex            01/01/70 00:00      
               he'd want to know it because ...            01/01/70 00:00      
                  Unnecessary complication            01/01/70 00:00      
         compiler results error            01/01/70 00:00      
            There is no compiler involved. Just an assembler.            01/01/70 00:00      
         3 top bits of 11-bit address            01/01/70 00:00      
            only good for calls within the same 2K block            01/01/70 00:00      
            one more question...            01/01/70 00:00      
               Read your instruction set            01/01/70 00:00      
                  i am making an assembler.            01/01/70 00:00      
                     Now I understand. Far more interesting.            01/01/70 00:00      
                        Absolute Assembler            01/01/70 00:00      
                           what is an absolute assembler            01/01/70 00:00      
                              Which do you love.            01/01/70 00:00      
                                 actually I didn't            01/01/70 00:00      
                                    Linking assemblers are more complicated            01/01/70 00:00      
                     why not?            01/01/70 00:00      
               ajmp            01/01/70 00:00      
                  Reconsider Robert....            01/01/70 00:00      
                     positive offset...            01/01/70 00:00      
                        No !!!            01/01/70 00:00      
                           let's try this way            01/01/70 00:00      
                              abc?            01/01/70 00:00      
                                 I do not know how micro            01/01/70 00:00      
                                    can any1 tell abc??            01/01/70 00:00      
                                       As easy as 'abc'            01/01/70 00:00      
                                       How to get ABC            01/01/70 00:00      
                           whats the operand here?            01/01/70 00:00      
                              neither!!!!            01/01/70 00:00      
                                 is that an error?            01/01/70 00:00      
                                    error, not necessarily, but ..            01/01/70 00:00      
                                    it is not an error, but it is poor practice            01/01/70 00:00      
                        Not offset            01/01/70 00:00      
                           Oops, I was wrong earlier            01/01/70 00:00      
   Problem solved            01/01/70 00:00      

Back to Subject List