注册 登录
编程论坛 汇编论坛

请教一个问题?

nihaoha 发布于 2007-07-07 19:00, 853 次点击
(BX)=012EH,(AX)=0381H,(SS)=0000H ,试分析下面指令
1.MOV SP,2FC0H
2.PUSH AX
3.PUSH BX

执行1
(SP)=2FC0H;
执行2
(02FBFH)——03H;(02FBEH)——81H;
执行3
(02FBDH)——01H;(02FBCH)——2EH; 注:——表左箭头。

问题:
执行2和3, (02FBFH) (02FBEH) (02FBDH) (02FBCH) 这四个数是怎样来的???

8 回复
#2
菜鸟上路2007-07-07 20:25
那是栈地址,具体的机子不同
#3
nihaoha2007-07-07 20:33
8086/8088 CPU  中呢?
#4
菜鸟上路2007-07-07 20:36
不晓得,不同的机子不同
#5
zklhp2007-07-10 14:22

是不是 "段:偏移量"

ss是0 就是0000:2fc0

压栈时sp减少 ………………

#6
nihaoha2007-07-13 16:54
以下是引用zklhp在2007-7-10 14:22:08的发言:

是不是 "段:偏移量"

ss是0 就是0000:2fc0

压栈时sp减少 ………………

可以具体点儿吗?

#7
zklhp2007-07-14 20:32

可以参考一下汇编的书

一个字进栈,系统自动完成两步操作:SP←SP-2,(SP)←操作数;
一个双字进栈,系统自动完成两步操作:ESP←ESP-4,(ESP)←操作数

#8
hkbyest2007-07-15 12:02
(BX)=012EH,(AX)=0381H,(SS)=0000H (SP)=2FC0H
push ax后 ;ax=0381H
sp-2 ;2fc0H-2=2fbeH
2fbeH=81H ;ax低字节在前,0381在内存里排列为81 03,81为低字节,想象一下“个十百千”怎么排列。
2fbfH=03H ;高字节在后

16位模式下段地址:偏移地址的线性物理地址为:段地址*16+偏移地址,所以ss:sp就得出(02FBFH) (02FBEH) (02FBDH) (02FBCH) 这四个数了。

#9
redhao2007-07-15 15:50
楼上说的很对, 我们的sp 指向栈顶的。
1