鱼C论坛

 找回密码
 立即注册
查看: 4121|回复: 9

汇编里初始PUSH压栈的时候减2那不是在第三格了吗?

[复制链接]
发表于 2012-3-2 21:07:39 | 显示全部楼层 |阅读模式
1鱼币
初始时地址是1000FH,压入前先减2再压入数据。1000FH-2=1000DH 他为什么会在1000EH这格呢,算出来在1000DH这格啊

1000AH
1000BH
1000CH
1000DH 这格
1000EH
1000FH

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-3-2 21:37:52 | 显示全部楼层
任何时候SP栈顶指针指向栈顶元素。

初始时地址是1000FH

楼主是不是把1000F当成栈的第一个单元地址了?

其实这段栈的第一个单元地址是 1000E, 压两个数据进去, SP就跑到 1000DH了。

如果我的表达还是不清楚的话,可以参考王爽的《汇编语言》第二版60页,问题3.6

如果将10000H ~ 1000FH 当作栈, 初始状态栈是空的话, 那SP就是指向10010H。

反过来推算,楼主初始时地址是1000FH, 那栈的空间就是 XXXXX ~ 1000EH 了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-3-2 22:12:45 | 显示全部楼层

我看小甲鱼的那个讲栈的那课,有指令没想通,原文:
mov ax,1000H
mov ss,ax
mov sp,2 (这句没想通)
mov ax,2266H
push ax
FFFE
FFFF
10000 66
10001 22
10002指向 栈顶
10003
不知道这么画是不是对的。
他指向10002
PUSH AX他又要减2又变成10000.
是不是这么个意思啊,我脑子已经被弄的模糊了。概念老是不能清晰
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-3-2 22:28:26 | 显示全部楼层
栈空间内 栈内没数据的时候 指针SP 指向栈顶下一个单元   你设定一个栈10000h--1000fh 那他的sp 就指向10010h  所以当数据进去的时候他的SP-2 会指向1000e 而不是1000d
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-3-2 22:30:58 | 显示全部楼层
本帖最后由 莫名其妙 于 2012-3-2 22:43 编辑
乄不想※错过 发表于 2012-3-2 22:12
我看小甲鱼的那个讲栈的那课,有指令没想通,原文:
mov ax,1000H
mov ss,ax



mov ax,1000H
mov ss,ax
mov sp,2 (这句没想通)  ; 你算算  数据是从0开始  0  1  2  不正好指向10002么 然后 sp -2 不就是10000么 10000开始的16位数据不就是 低八位66  高八位22   你读起来不就是2266h么?              sp-2 → 10000     66h 低
mov ax,2266H                                                                                            10001    22h  高
push ax                                                                                                sp→10002
栈段push 的方向是从下向上    数据段的存储方向是从上向下

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-3-2 22:39:50 | 显示全部楼层
初始状态栈是空的话,它的栈顶就是在1000f的上面一个,也就是10010H,因为栈顶指向10010时向下移两个内存单元,这样指针就知道1000E,也就是说0~f共有16个,这样就构成了两个内存单元的一循环,但栈中都充满时在操作时又从10010的栈顶开始覆盖处理。希望对你有用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-3-8 23:55:23 | 显示全部楼层
乄不想※错过 发表于 2012-3-2 22:12
我看小甲鱼的那个讲栈的那课,有指令没想通,原文:
mov ax,1000H
mov ss,ax

就像你去看电影,影院里只有情侣包厢,而且过道很窄,你和你老婆是最里面那个1号包厢,在你们进去之前,整个厅都没人,那么你想从里面拉人出来的话,你就只能从墙里面挖挖看了;当你俩坐进1号包厢了,别人再想从这个厅里面拉人的话,当然就指向你俩了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-11-13 08:42:14 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-11-13 08:42:50 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-12-31 12:07:39 | 显示全部楼层
学习学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-19 18:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表