регистр аккумулятора 8086 семейство микропроцессоров - PullRequest
0 голосов
/ 26 октября 2018

Регистр аккумулятора - это регистр, который содержит временные значения.Аккумуляторы являются только регистры EAX, AX, AL.

Как я знаю, BX, CX, DX и расширенные версии могут содержать постоянные значения.Итак, почему мы используем регистры EAX, AX, AL в качестве аккумуляторов?

Что такое аккумулятор?

Ответы [ 2 ]

0 голосов
/ 26 октября 2018

У более старых предков 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-операндные наборы команд .

0 голосов
/ 26 октября 2018

AX не более или менее временен, чем другие регистры.

Ссылка на статью вики:

https://en.wikipedia.org/wiki/Accumulator_(computing)

8080 to 8086 register mapping and legacy name

A       AL   accumulator
H,L     BX   high, low memory pointer
B,C     CX   byte counter (also a memory pointer)
D,E     DX   data         (also a memory pointer)
SP      SP   stack pointer
...     SI   source index
...     DI   destination index
...     BP   base pointer (uses SS as default segment)
...