繁体   English   中英

通用寄存器 - 订单

[英]General Purpose Registers - Order

为什么通用寄存器按原样排序(eax,ecx,edx,ebx)? 例如,对于“inc”指令,操作码是:

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

有没有理由为他们这样订购?

(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

如另一个答案中所述,8086中的AX,BX,CX和DX不仅仅是4个通用寄存器的任意名称 - 它们具有这些寄存器所具有的特殊功能的助记符含义:“累加器”,“基数”,“计算“和”数据“。 给定上面的映射,将“累加器”函数分配给内部寄存器0,将“基本”函数分配给内部寄存器3是有意义的。(8086内部寄存器5,6和7是BP,SI和DI,它们是新功能。)

当然,这真的只是略微了解(见这里的例子)推测 - 只有8086设计师肯定知道......

有8个寄存器,因此每个寄存器都接收0到7的序数。

我不明白这个问题。 它是“为什么他们不按字典顺序排序?” 这是因为字母a,b,c,d代表累加器,基数,计数器和数据,而不仅仅是字母表的前四个字母。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM