I've been trying to understand how an assembler assembles the JMP command. Consider the following code:
AGAIN: OUT 0,AL JMP AGAIN
The assembler turns this into the following hex:
E6 00 EB FC
The FC at the end corresponds to a displacement of -4. I would have thought that the displacement would only need to be -3 (
FC->EB, EB->00, 00->E6 ). What is the reason for this extra move? I'm guessing this is related to the 8088 parallel fetch and execution.