[Preface: This is a generic CS question, not really 8086specific, and should be moved over to SE]
TL;DR:
How microprocessor knows that memory address (BX + SI + 5FFDH) to send [BX + SI + 5FFDH] + EABFH's value to memory according to empty instruction queue and we cannot calculate BX + SI + 5FFDH again.
Why should it be recalculated? That would be rather stupid. The calculated address gets simply kept in an internal register until writing is issued.
A CPU has many more internal registers than the ones defined as part of the ISA. What they are, and how they are used are implementation specific decisions and not part of the ISA. That's were engineers can get creative to improve performance or speed or both (or cost FWIW :))
It does seem that there is a fundamental lack of understanding how a 8086 operates, so maybe some hints about were to look are appropriate:
First of all: Don't assume, but read the Manual
Section 2.2 starting on page 2-3 nicely describes the over all architecture, including the parallel operation of Bus Interface Unit (BIU) and Execution Unit (EU).
- The BIU holds
- Address Generation,
- the necessary _Registers: (IP and segment registers) and
- Instruction Queue, while
- The EU consists of
- _General Registers,
- ALU and Flags and ofc.
- Instruction decode and so on.
There is no 'unified' CPU, but BIU and EU working in parallel. The BIU will fetch data from its IP whenever there is no other request and empty space in the instruction queue. So to start with, the EU will stall until a whole instruction is in the queue - in this case all 4 bytes. It will get all 4 bytes at once. After decoding it will calculate the effective address and put a request to the BIU, which will calculate the memory address from the effective address the CPU has sent, fetch the data and hand it to the EU as soon as the fetch is complete (may be multi access cycles in case of unaligned data). After that the EU will process the data - in this case, add an already read constant and issue subsequent write request with the result.
Or in steps:
- BIU fills the Instruction Queue (IQ)
- Whenever a whole instruction is fetched it gets handed to the EU
- BIU continues to (re)fill the IQ
- EU decodes the opcode as well as the mod/rm byte
- EU calculates Effective Address (EA)
- EU issues a read request with EA to BIU for data
- BIU calculates memory address from EA and Segment used
- BIU puts Read Request out on the Bus and reads
- Data is read
- BIU delivers data to EU
- BIU continues to fill IQ (if not filled)
- EU calculates the result
- EU issues a write request using the previous EA and calculated result
- EU takes next instruction from IQ (or stalls if there is none)
- BIU calculates memory address from EA and Segment used
- BIU puts Write Request out on the Bus and reads
- Data is written
Again: Keep in mind, these are not strictly sequential steps, but parallel actions of both unit (and the Bus).
For the operation of the EU it's not said that the operation gets calculated in a specific sequence - as long as that sequence used confirms to the defined result. It's up to each implementation to handle them in whatever hardware (and/or microcode) they want to throw at it. There is no law against a three input adder - or two sequential adders able to calculate two registers and one constant in a single cycle.
ADD disp(base)[idx], reg
and then it might be retro :-)