I wonder how a multi-bytes instruction is executed when there is only 16-bit data bus? Assume the instruction is MOV AX,[10H]
. The machine code of this instruction is 3 bytes. By combining the CS:IP registers, a 20-bit address is generated and there three bytes (which represents the machine code of that instruction) is accessed.
| |
CS:IP -> +-----------+
| A0 |
+-----------+
| 10 |
+-----------+
| 00 |
+-----------+
| |
As you can see, we have to put A01000 on the data bus.
Best Answer
Intel 8086 processor doesn't execute commands directly from data bus. Instead, commands at CS:IP are fed into 6-byte prefetch queue and executed from there. This queue was specifically designed to accommodate a complete instruction, and the maximum instruction length on 8086 is limited to 6 bytes.