标题:入栈的地址问题?
只看楼主
guancracker
Rank: 1
等 级:新手上路
威 望:1
帖 子:27
专家分:0
注 册:2007-5-14
得分:0 
当然了!如果是
mov ax,2000
mov ss,ax
mov sp,4
d 2000:0 f 查看的是 标志寄存器,CS 的值
d 2000:fff0 查看的是 IP 的值
因为 栈顶是 2000:4
先把标志寄存器的值入栈 这时 SP为2
再把CS 的值入栈 这时 SP为0
再把IP 的值 入栈 好像只能存到 2000:fff0
对吧。



2007-05-15 22:27
菜鸟上路
Rank: 4
等 级:贵宾
威 望:14
帖 子:1120
专家分:0
注 册:2006-3-21
得分:0 
以下是引用guancracker在2007-5-15 22:15:51的发言:

哦,标志寄存器,CS ,IP 的值 被压入堆栈 应该只有一个地址显示吧
你的那个 d 2000:0 f 查看 是 MOV SP,4 吧
而那个 d 2000:fff0 查看的是 MOV SP,0 吧

你是 CMD 下 先后执行过 MOV SP,4和 MOV SP,0 这两个指令。
当然两个地方都可以查看吧。

你重新来
mov ax,2000
mov ss,ax
mov sp,0

看看是不是只有d 2000:FFF0 才能查到

重新来又全是0哦


2007-05-15 22:34
菜鸟上路
Rank: 4
等 级:贵宾
威 望:14
帖 子:1120
专家分:0
注 册:2006-3-21
得分:0 
以下是引用guancracker在2007-5-15 22:27:44的发言:
当然了!如果是
mov ax,2000
mov ss,ax
mov sp,4
d 2000:0 f 查看的是 标志寄存器,CS 的值
d 2000:fff0 查看的是 IP 的值
因为 栈顶是 2000:4
先把标志寄存器的值入栈 这时 SP为2
再把CS 的值入栈 这时 SP为0
再把IP 的值 入栈 好像只能存到 2000:fff0
对吧。



2007-05-15 22:35
guancracker
Rank: 1
等 级:新手上路
威 望:1
帖 子:27
专家分:0
注 册:2007-5-14
得分:0 

谢谢你了啊
现在先不管它了,接着看书先,也许以后会懂。


2007-05-15 22:52
guancracker
Rank: 1
等 级:新手上路
威 望:1
帖 子:27
专家分:0
注 册:2007-5-14
得分:0 
回复:(guancracker)入栈的地址问题?

找到答案了!以下内容是我转载的。
1
呵呵!玩汇编常犯的毛病,你程序写错了。

改成如下:
mov bx,ss
mov cx,sp
cli
mov ax,2000H
mov ss,ax
mov sp,0
add sp,4
pop ax
mov sp,cx
mov ss,bx
sti

在debug中一定要用go命令执行
g= 0100 0115

再次提醒,修改堆栈一定要谨慎。

当堆栈指针处于非正常状态时,确保不进行堆栈写入操作。
要禁止中断,包括debug的T、P命令,每一次跟踪都会中断目标程序,将当前地址等压栈(ss:sp= 2000:0000 或2000:0004)这里都是dos区或程序区。后继各种各样的死机都是很正常的。


2007-05-16 03:12
菜鸟上路
Rank: 4
等 级:贵宾
威 望:14
帖 子:1120
专家分:0
注 册:2006-3-21
得分:0 
谢了!

2007-05-16 12:17



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-139357-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.354888 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved