У более старых предков 8086 года многие инструкции были доступны только с накопителем в качестве неявного места назначения.См. https://en.wikipedia.org/wiki/Accumulator_(computing).
Название «аккумулятор» для регистра AL / AX 8086 в основном историческое и связано с дизайном 8086, чтобы механически сделать возможным перевод исходного кода asm из кода 8080.( Почему первые четыре GPR x86 названы в таком не интуитивном порядке? , а также Начало x86: Intel 8080 против Intel 8086? )
Есть специальная краткая кодировка многих инструкций с использованием AL / AX / EAX (например, add al, 2
- 2 байта, но add cl, 2
- 3 байта).8086 (и более поздние расширения в 286/386) сделали регистры более ортогональными, чем 8080, так что вы можете add dx, cx
без необходимости использовать аккумулятор для всех инструкций ALU.
8086 является регистром Машина , а не Аккумуляторная машина , насколько она реализует модель вычислений. Вы можете сохранить размер кода, используя регистр аккумулятора, но это не требуется для большинства вещей, особенно сболее поздние расширения для ISA x86.
На многих старых процессорах вам, возможно, пришлось сделать эквивалент mov ax,dx
/ add ax, cx
.Например, у 8080 / Z80 были такие инструкции, как LDA
(загрузка в аккумулятор) и ORA
(ИЛИ в аккумулятор), где назначение аккумулятора было вставлено в мнемонику и код операции.(Вот откуда неэффективный и устаревший or ax,ax
вместо test ax,ax
идиома .
Эта карта 8080-кода операции http://pastraiser.com/cpu/i8080/i8080_opcodes.html показывает много инструкций, таких как SUB D
и SUB C
, где неявным первым операндом является аккумулятор, A.
Но 8086 - это машина регистра, а не машина аккумулятора.Существует несколько инструкций, которые требуют использования AX, например mul
/ div
и cdq
, но кроме DIV и умножения с расширением вы можете использовать любые регистры, которые вы хотите использовать с movsx
на 386 и позже, и imul edx, edi
.
Обратите внимание, что многие 8-битные микросхемы, которые имеют только инструкции ALU, использующие аккумулятор, не всегда являются чистыми машинами-накопителями, если говорить о теории вычислений.У них обычно есть другие регистры, которые они могут использовать для режимов адресации.Но они, как правило, 1-операндные наборы команд .