X在装配中的EAX,EBX,ECX中意味着什么?

时间:2010-03-30 12:41:37

标签: assembly x86 naming-conventions cpu-registers

Google未显示结果,

有谁知道?

5 个答案:

答案 0 :(得分:33)

X表示 ,并且至少返回到8080.它有8位寄存器B,C,D,E,H,L(其中)其他)也可以成对使用(BC,DE和HL)。 BC和DE对主要用于16位算术; HL对通常保持存储器地址。针对

使用X的一些示例
LXI  D,12ABH    ; "load pair immediate"
DCX  B          ; "decrement pair"
STAX D          ; "store A (indirect) at pair"

快进到8086.它有AL,AH,BL,BH,CL,CH,DL,DH寄存器,与8080类似,可以成对使用:AX,BX,CX,DX。 / p>

正如其他人所指出的,32位寄存器名称中的E表示扩展

答案 1 :(得分:9)

据我所知,没什么。它代表通用寄存器。

16位AX寄存器可以寻址为AH(高字节)和AL(低字节)。

EAX寄存器是AX寄存器的32位版本。 E代表延长。

答案 2 :(得分:5)

在8086上,AX寄存器是AH和AL的组合。同样BX是BH和BL等。在80386上,英特尔不是将16位寄存器组合成32位寄存器,而是为每个寄存器增加了16位。名称“AL”仍指第一个字母命名寄存器的第0-7位,“AH”到第8-15位,“AX”到第0-15位;名称“EAX”现在指的是寄存器的所有32位。

值得注意的是,大多数其他16位和32位处理器不提供任何等效访问寄存器上部或下部的方法。在硬件复杂性和指令编码位中允许这种访问的成本是巨大的,并且在今天这个时代,将寄存器的一个8位部分添加到另一个寄存器的8位部分的能力是远远的。没有比这些硬件或指令编码空间可能放在其他许多用途更有用的东西。另一方面,这些能力在存在时仍然有用。

答案 3 :(得分:1)

正如Mihai所说,这只是一个命名惯例。

然而,鉴于“X”通常用于“填写你的价值”,并且数学家通常将其用作方程式中首选的变量名称,并且这些特定的寄存器是通用的(而不是说ESP)这是扩展(32位)堆栈指针或EIP扩展指令指针),这可能是选择X而不是说'B'的原因。

答案 4 :(得分:0)

我能想到的一个可能原因是,它表示它没有“正常”状态。在谈论电子产品中的串行通信时,如果其中一条数据线可以是任何数据线,您可能会说其状态为X,因为它既不是/也不是0或1。