Регистры общего назначения - заказ - PullRequest
4 голосов
/ 29 сентября 2010

Почему регистры общего назначения упорядочены как есть (eax, ecx, edx, ebx)?Например, для инструкции «inc» используются следующие коды операции:

inc eax - 40
inc ecx - 41
inc edx - 42
inc ebx - 43

Есть ли причина, почему они заказаны таким образом?

Ответы [ 2 ]

4 голосов
/ 30 сентября 2010

Странное расположение (E) BX, вероятно, связано с тем, что 8086 эволюционировал из 8080.

8080 имеет аккумулятор (A) и 6 регистров общего назначения B, C, D, E, H и L, где B / C, D / E и H / L могут использоваться вместе в парах, и, в частности, H / L может использоваться в качестве адреса для доступа к памяти.8086 был спроектирован так, чтобы существующий код 8080 мог быть легко переведен на него;Я думаю, что было бы логично отобразить регистры в следующем порядке:

8080 register A   -> 8086 internal register 0
              B,C ->                        1
              D,E ->                        2
              H,L ->                        3
              SP  ->                        4

Как отмечено в другом ответе, AX, BX, CX и DX в 8086 - это не просто произвольные имена для 4 регистров общего назначения.- они имеют мнемонические значения для специальных функций, которые имеют эти регистры: «аккумулятор», «база», «счет» и «данные».Учитывая приведенное выше отображение, имеет смысл присвоить функцию «аккумулятора» внутреннему регистру 0, а функцию «базы» - внутреннему регистру 3. (И 8086 внутренних регистров 5, 6 и 7 - это BP, SI и DI, которые былиновая функциональность.)

Конечно, это все лишь немного информированные (см. здесь ) предположения - только 8086 проектировщики знают наверняка ...

0 голосов
/ 29 сентября 2010

Есть 8 регистров, поэтому каждый из них получил порядковый номер от 0 до 7.

Я не понимаю вопроса. Это «почему они не заказаны в лексикографическом порядке?» Это потому, что буквы a, b, c, d обозначают аккумулятор, базу, счетчик и данные, а не только первые четыре буквы алфавита.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...