鱼C论坛

 找回密码
 立即注册
查看: 2128|回复: 5

关于栈中数据问题 真心求解。

[复制链接]
发表于 2012-6-20 22:33:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. assume cs:code

  2. code segment

  3. dw 0123h,0234h,0345h,0567h,0678h,0789h,089ah,09abh

  4. dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

  5. start:

  6. mov ax,cs
  7. mov ss,ax
  8. mov sp,30h

  9. mov bx,0
  10. mov cx,8
  11. s:

  12. push cs:[bx]
  13. add bx,2

  14. loop s

  15. mov bx,0
  16. mov cx,8

  17. s0:
  18. pop cs:[bx]
  19. add bx,2

  20. loop s0

  21. mov ax,4c00h
  22. int 21h

  23. code ends

  24. end start
复制代码



截取了有疑问的数据。上面是代码。爽哥的。
-t
AX=13D2  BX=0000  CX=0058  DX=0000  SP=0030  BP=0000  SI=0000  DI=0000
DS=13C2  ES=13C2  SS=13D2  CS=13D2  IP=003A   NV UP EI PL NZ NA PO NC
13D2:003A B90800        MOV     CX,0008
-t
AX=13D2  BX=0000  CX=0008  DX=0000  SP=0030  BP=0000  SI=0000  DI=0000
DS=13C2  ES=13C2  SS=13D2  CS=13D2  IP=003D   NV UP EI PL NZ NA PO NC
13D2:003D 2E            CS:
13D2:003E FF37          PUSH    [BX]                               CS:0000=0123
-d cs:0
13D2:0000  23 01 34 02 45 03 67 05-78 06 89 07 9A 08 AB 09   #.4.E.g.x.......
13D2:0010  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
13D2:0020  00 00 00 00 00 00 D2 13-00 00 3D 00 D2 13 D9 0D   ..........=..... ;红色的部分是栈空间
13D2:0030  8C C8 8E D0 BC 30 00 BB-00 00 B9 08 00 2E FF 37   .....0.........7
13D2:0040  83 C3 02 E2 F8 BB 00 00-B9 08 00 2E 8F 07 83 C3   ................
13D2:0050  02 E2 F8 B8 00 4C CD 21-00 00 00 00 00 00 00 00   .....L.!........
13D2:0060  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
13D2:0070  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
-

;没入栈之前怎么会有数据呢,SS=13D2  SP=0030。D2 13-00 00 3D 00 D2 13 D9 0D  这些数据是哪来的。求解.
;初始栈不是为空的么。
      00 00 00 00 D2 13 00 00-43 00 D2 13 D9 0D 23 01  入栈之后,数据又变这样了。
-t
AX=13D2  BX=0002  CX=0008  DX=0000  SP=0022  BP=0000  SI=0000  DI=0000
DS=13C2  ES=13C2  SS=13D2  CS=13D2  IP=0051   NV UP EI PL NZ NA PO NC
13D2:0051 E2F8          LOOP    004B
-p
AX=13D2  BX=0010  CX=0000  DX=0000  SP=0030  BP=0000  SI=0000  DI=0000
DS=13C2  ES=13C2  SS=13D2  CS=13D2  IP=0053   NV UP EI PL NZ AC PO NC
13D2:0053 B8004C        MOV     AX,4C00
-d cs:0
13D2:0000  AB 09 9A 08 89 07 78 06-67 05 45 03 34 02 23 01   ......x.g.E.4.#.
13D2:0010  00 00 00 00 00 00 D2 13-D2 13 00 00 51 00 D2 13   ............Q...
13D2:0020  02 32 9A 08 89 07 78 06-00 00 53 00 D2 13 D9 0D   .2....x...S.....
;出栈后

        出栈之后栈里面的数据又成这样了。= =#
           求解.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-6-20 22:49:11 | 显示全部楼层
汇编真心不会,要是C语言还可以帮帮您!!!!!!!!!!!!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-6-20 22:59:36 | 显示全部楼层
:'( C和汇编学得都不好。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-6-21 19:32:59 | 显示全部楼层
汇编学不久 之前没注意  搜到一些 LZ可以看看
http://www.asmedu.net/bbs/pasteinfo.jsp?part=1&level=book&kind=1007&qID=12981

http://topic.csdn.net/u/20110810/22/c1019ecd-4441-4354-977a-a4959dcac9ed.html

http://bbs.bccn.net/forum-126-1.html
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-6-21 23:17:46 | 显示全部楼层
T中断程序在执行过程中会使用当前栈存放cpu现场的状态数据。自然就会将你栈中的内容更改了。楼主课可以循环一次看一次栈,就会发现栈中的数据一直都在有变化。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-6-21 23:18:30 | 显示全部楼层
找到答案了。谢谢哈。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-5-14 14:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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