quchuan 发表于 2013-6-20 14:33:30

这样的push越界会发送什么呢?

假设寄存器 SS=1001HSP=0010H
那么栈空间为 10010H ~ 1001FH
栈顶指针指向 10020H . 寄存器 SS=1001H   SP=0010H
mov bx,1234
push bx
这样执行8次后,每次sp 都会减去 2,栈顶指针的位置向上移动2个字节
栈顶指针指向 10010H,寄存器 SS=1001H   SP=0000H

问题就这么来了!!!!
再次执行
push bx
栈顶指针向上移动2个字节,指针位置为 1000EH,这没问题
但是SP=0000H,他现在的值是多少???总不能为 -0002H吧??
SP会向SS借值吗??
我测试过了,每次总是会出问题,测试不成功,有谁了解过这个问题,麻烦给解答下,非常感谢:victory:


晚· 发表于 2013-6-20 17:02:00

10010;fffe

luoqqsh 发表于 2013-6-20 21:59:00

看上去不错,谢谢分享

炸鸡大侠 发表于 2013-6-21 00:20:09

不会吧,好像SS段寄存器不会改变,所以就算你一直不停PUSH的话,也就1000h个字节的空间,到0的时候-2就成FFFd了,
寄存器是无符号的.-2也就是Fffd

quchuan 发表于 2013-6-21 10:46:15

谢谢大家的帮助,我已经知道了,正如4楼说的,SS寄存器不会变,SP的值会从0变成FFFE.
换句话说栈是个逻辑上首位相连的64K内存。
页: [1]
查看完整版本: 这样的push越界会发送什么呢?