Нечетные размещение (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, которые появились новые функциональные возможности)
конечно, это действительно всего лишь немного информирован (см here, например) спекуляция. - только 8086 дизайнеры знают наверняка ...
Не знаю, почему вы думаете, что они должны быть в любой определенный порядок, если, конечно, они не попадают в стек. Кроме того, это зависит от того, что вы делаете, «слова», «байт» и т. Д. Целевое хранилище может быть как ячейкой памяти, так и регистром. – EKet
Как это EAX, EBX и т. Д. Это 32-битные регистры ... И хорошо, кроме ebx, они кажутся алфавитами, нет? – 0x90