2

我一直在研究 x86 汇编语言,PUSHA 指令出现了一个问题。

据我所知,Pusha 与 PUSH AX、CX、DX、BX、原始 SP、BP、SI 和 DI 相同。
我想知道为什么 PUSH CX 在 PUSH BX 在 PUSHA 指令中执行之前执行。

硬件架构有什么原因吗?

4

1 回答 1

8

通用寄存器不按字母顺序排列,字母是单词的缩写:

AX => Accumulator register
BX => Base register
CX => Counter register
DX => Data register

大多数人使用AX, BX, CX,DX因为它更容易记住,但对于体系结构,顺序实际上是AX, CX, DX,BX这可以是指令操作码中的注释:

 opcode | instruction
--------+------------------
B80000  | MOV     AX,0000
B90000  | MOV     CX,0000
BA0000  | MOV     DX,0000
BB0000  | MOV     BX,0000
50      | PUSH    AX
51      | PUSH    CX
52      | PUSH    DX
53      | PUSH    BX
于 2013-10-25T02:43:48.743 回答