早期 CPU (如 IA-32 前身、簡易教學機) 進行定點乘法時,兩個 n 位數相乘產生 2n 位乘積,單個通用寄存器放不下。
假設 16 位機器,兩個 16 位有符號整數相乘:
被乘數 X = 0x1234 (4660)
乘數 Y = 0x0002 (2)
乘積 = 0x00002468 (9320) // 32 位
運算結束後:
AC = 0x0000 (高 16 位)MQ = 0x2468 (低 16 位)若結果為負數 (補碼),高位為符號擴展位 (全 1)。
x86 MUL/IMUL 指令結果固定放在 DX:AX (16位)、EDX:EAX (32位)、RDX:RAX (64位),無專用 MQ 寄存器,通用寄存器對承擔高低位。