为什么通用寄存器按照它们的顺序排列(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