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

栈数据有点不明白的地方

kithon 发布于 2011-04-26 01:02, 500 次点击
hello guys,
今天看到王爽汇编程序6.3,我debug了一遍,中间出现了一点小小的问题,百思不得其解,不知道各位是否有知道的。
程序代码:
程序如下:assume cs:codesg //程序的作用是将8个数据入栈
          codesg segment
          dw 0123h, 0456h, 0789h, 0abch, 0defh, 0fedh, 0cbah, 0987h
          dw 0, 0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0
            mov ax, cs
            mov ss, ax
            mov sp, 30h       -->当执行这句的时候原本数据都为0 的栈内,无缘无故多了几个数据
            mov bx, 0
            mov cx, 8
        s:  push cs:[bx]
            add bx, 2
            loop s

程序代码:
141D:0032 8ED0          MOV     SS,AX
-d 141d:0 2f
141D:0000  23 01 56 04 89 07 BC 0A-EF 0D ED 0F BA 0C 87 09  
141D:0010  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  
141D:0020  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ->未执行 mov sp, 30h
-t

AX=141D  BX=0000  CX=0058  DX=0000  SP=0030  BP=0000  SI=0000  DI=0000
DS=140D  ES=140D  SS=141D  CS=141D  IP=0037   NV UP EI PL NZ NA PO NC
141D:0037 BB0000        MOV     BX,0000
-d 141d:0 2f
141D:0000  23 01 56 04 89 07 BC 0A-EF 0D ED 0F BA 0C 87 09  
141D:0010  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  
141D:0020  00 00 00 00 00 00 1D 14-00 00 37 00 1D 14 15 0E   ->执行 mov sp, 30h后
继续执行push 0123H后
-d 141d:0 2f
141D:0000  23 01 56 04 89 07 BC 0A-EF 0D ED 0F BA 0C 87 09  
141D:0010  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  
141D:0020  00 00 00 00 1D 14-00 00 37 00 1D 14 15 0E 23 01 -->0123H入栈后,多余的数据都同时向前移动

在朋友机器上调试也会出现这种问题,只是多余的那些数据稍稍变了一下
问题:这几个数据是从何而来,它们的作用又是什么呢?
希望知道的童鞋能不吝赐教~
4 回复
#2
xiaomarn2011-04-26 11:23
37 00 1D 14是你的当前cs:ip,可以用来写病毒时获取重定位地址(先获取sp,然后再利用偏移),15 0E至今不明,期望高手指点
#3
ansic2011-04-26 12:22
debug程序的时候, 也会利用栈来进行单步。
#4
2011-04-29 05:31
debug下的1M空间。不只你在用     debug虚拟机也在用
#5
zaixuexi2011-04-29 23:15
慢慢学,坚持了就会有收获的
1