Labels appear in assembly code, but the assembly code must be turned into machine instructions to be run on the device.
What this quote is saying is that as the assembly file is processed, the label in jmp
instructions is replaced with the address of the instruction following the label. The address itself is discovered during the compilation process as the instructions are collated.
If you want to look at actual machine code that is produced, you can view the intel .hex
file produced by avr-gcc. There is a wikipedia entry to help you interpret the intel hex file format.
Edit in response to OP's comment:
For rjmp
, the number supplied is calculated by the compiler by taking the address of the instruction following the label and subtracting the address of the rjmp
instruction. Note that rjmp
only works if the jump is small enough, while jmp
can go to any address.
If you want an actual document describing that process, you need to research the compiler you are using. There may not be such a document explaining exactly what you want, but the source code is available for avr-gcc.
Note that most assembly code is actually produced by compilers themselves when processing high-level language code such as C. The choice of jmp
versus rjmp
and how to calculate the number to give to the instruction can even depend on compiler switches. Compiling with -O3
or -Os
will give different resulting assembly code.
jmp
instructions are encoded or are you asking where thejmp
instruction jumps to? – Ross Ridge