爲什麼通用寄存器按照它們的順序排列(eax,ecx,edx,ebx)? 例如,對於「公司」指令操作碼是:通用寄存器 - 訂購
inc eax - 40
inc ecx - 41
inc edx - 42
inc ebx - 43
有他們爲什麼要下令方式的原因嗎?
爲什麼通用寄存器按照它們的順序排列(eax,ecx,edx,ebx)? 例如,對於「公司」指令操作碼是:通用寄存器 - 訂購
inc eax - 40
inc ecx - 41
inc edx - 42
inc ebx - 43
有他們爲什麼要下令方式的原因嗎?
有8個寄存器,所以它們中的每一個接收到的順序從0到7
我不理解的問題。是「他們爲什麼不按字典順序排列?」 這是因爲字母a,b,c,d代表累加器,基數,計數器和數據,不僅僅是字母表的前四個字母。
(E)BX的奇數放置可能是由於該8086從8080
8080演進具有通用寄存器B,C,d的蓄能器(A)和圖6的方式, 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 2010-09-29 17:12:59
因爲它是EAX,EBX等,這些都是32位寄存器......而且,除了ebx,它們似乎是字母,不是? – 0x90 2010-09-29 17:14:40