我一直在研究 x86 汇编语言,PUSHA 指令出现了一个问题。
据我所知,Pusha 与 PUSH AX、CX、DX、BX、原始 SP、BP、SI 和 DI 相同。
我想知道为什么 PUSH CX 在 PUSH BX 在 PUSHA 指令中执行之前执行。
硬件架构有什么原因吗?
我一直在研究 x86 汇编语言,PUSHA 指令出现了一个问题。
据我所知,Pusha 与 PUSH AX、CX、DX、BX、原始 SP、BP、SI 和 DI 相同。
我想知道为什么 PUSH CX 在 PUSH BX 在 PUSHA 指令中执行之前执行。
硬件架构有什么原因吗?
通用寄存器不按字母顺序排列,字母是单词的缩写:
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