Member Avatar for amrbekhit

Hi all,

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.

Thanks

--Amr

Maybe because PC is already pointing at the first byte of the next instruction, rather than the last data byte of the JMP instruction.

Hi all,

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.

Thanks

--Amr

Yeah, the program counter automatically points to the next instruction before the actual execution, so the jump back to FC is counted as well.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.