Memory Map View
Press Parse and the app lands you on the Memory Map View. This is the chip's program memory laid out the way the microcontroller actually sees it: one row per address, from the bottom of memory upward, with nothing skipped.
That last part is the point of this view. Even the addresses your program never touches get a row, so you can see the shape of your code and the holes between the pieces.
The two numbers at the top
Above the table are two figures that answer the question "how full is this chip?".
- Occupied size counts the bytes your code really uses.
- Covered area counts everything from the lowest address to the highest, gaps included.
The difference between them is the space your linker left behind. When a part is nearly full and you are deciding whether to squeeze what you have or move to a bigger device, that gap is the number worth looking at first.
Next to them is Jump to Address. Pick an address from the list and the table scrolls straight there, which saves a lot of dragging once a real program is loaded.
The columns, left to right
- Hex Address. Where you are in program memory. Some addresses also carry a red label, explained below.
- Hex Code. The raw byte sitting at that address. If the box is empty, nothing was loaded there.
- Assembly Instruction. What that byte means as an 8051 instruction. Real decoded instructions are shown boxed in red; greyed out NOP rows are empty memory, not code you wrote.
- A small byte count follows the instruction, so a three byte instruction reads 3 B. That tells you how many rows belong to that one instruction.
- Address in Binary (16bit). The same address in binary, which is handy when you are working out address decoding by hand.
- Code Data in Binary (8bit). The same byte in binary, for when the bit pattern is what matters.
Labels that tell you where you are
The 8051 reserves the bottom of memory for interrupt vectors, and the app marks them for you. Load the built-in sample and you will see EX0 at 0003h, T0 at 000Bh, EX1 at 0013h, T1 at 001Bh and Serial at 0023h.
These are not guesses about your code. They are fixed by the chip, so when you see RETI sitting at 000Bh you know immediately that it is the timer 0 interrupt handler, even with no source code in front of you.
Further up you will also see labels like sub_0025. Those are subroutines the app found by following the calls in your program, named after the address they start at.
Looking up an instruction you do not recognise
Every decoded instruction has a small info button beside it. Click it and the Assembly Reference window opens on that exact instruction, with its opcode, size, cycle count and a plain description. You do not have to go hunting through a datasheet in another window.
When to use this view instead of the others
Use the Memory Map View when the address is what matters: checking that a routine landed where you expected, seeing how much room is left, or confirming an interrupt vector is populated. When you would rather see the file's own record structure, switch to the Parsed View. When you want to see how the code flows rather than where it sits, use the Control Flow tab.
