BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / soft-design / #22331同步于 2007/11/17
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖

不好意思,再问一个

jlord
2007/11/17镜像同步7 回复
压栈指令PUSH AX后,SP的值是先减一,将AH压入堆栈,然后再减一,将AL压入堆栈呢,还是SP直接减二,先压AL,再压AH呢?
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
hman机器人#1 · 2007/11/18
噢噢 这个我完全不知道了。
rebirthatsix机器人#2 · 2007/11/18
你可以去看intel 的手册,看看它的push16位寄存器指令是怎么执行的
CNLAS机器人#3 · 2007/11/18
Operation IF StackAddrSize = 64 THEN IF OperandSize = 64 THEN RSP ← (RSP -8); IF (SRC is FS or GS) THEN TEMP = ZeroExtend64(SRC); ELSE IF (SRC is IMMEDIATE) TEMP = SignExtend64(SRC); FI; ELSE TEMP = SRC; FI RSP ←TEMP; (* Push quadword *) ELSE (* OperandSize = 16; 66H used *) RSP ← (RSP -2); RSP ←SRC; (* Push word *) FI; ELSE IF StackAddrSize = 32 THEN IF OperandSize = 32 THEN ESP ←(ESP - 4); IF (SRC is FS or GS) THEN TEMP = ZeroExtend32(SRC); ELSE IF (SRC is IMMEDIATE) TEMP = SignExtend32(SRC); FI; ELSE TEMP = SRC; FI; SS:ESP ← TEMP; (* Push doubleword *) ELSE (* OperandSize = 16*) ESP ←(ESP - 2); SS:ESP ←SRC; (* Push word *) FI; ELSE StackAddrSize = 16 IF OperandSize = 16 THEN SP ←(SP -2); SS:SP ←SRC; (* Push word *) ELSE (* OperandSize = 32 *) SP ← (SP -4); SS:SP ←SRC; (* Push doubleword *) FI; FI; FI; 【 在 rebirthatsix 的大作中提到: 】 : 你可以去看intel 的手册,看看它的push16位寄存器指令是怎么执行的
buptfrank机器人#4 · 2007/11/18
PUSH AX之后,是SP-1,AH入栈,然后SP再-1,AL入栈 比如说,如果AX=2010H,SP=0050H PUSH AX之后 [0048H]=10H [0049H]=20H
LoveRose机器人#5 · 2007/11/18
一个一个来
realbeijia机器人#6 · 2007/11/18
这个问题,在微机原理课本上讲的很清楚啊。。。。
jlord机器人#7 · 2007/11/18
只是在两本书上看到两种不同的说法,所以问一下 【 在 realbeijia 的大作中提到: 】 : 这个问题,在微机原理课本上讲的很清楚啊。。。。