programmer 发表于 2012-6-20 22:33:51

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

assume cs:code

code segment

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

dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

start:

mov ax,cs
mov ss,ax
mov sp,30h

mov bx,0
mov cx,8
s:

push cs:
add bx,2

loop s

mov bx,0
mov cx,8

s0:
pop cs:
add bx,2

loop s0

mov ax,4c00h
int 21h

code ends

end start


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

;没入栈之前怎么会有数据呢,SS=13D2SP=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=13D2BX=0002CX=0008DX=0000SP=0022BP=0000SI=0000DI=0000
DS=13C2ES=13C2SS=13D2CS=13D2IP=0051   NV UP EI PL NZ NA PO NC
13D2:0051 E2F8          LOOP    004B
-p
AX=13D2BX=0010CX=0000DX=0000SP=0030BP=0000SI=0000DI=0000
DS=13C2ES=13C2SS=13D2CS=13D2IP=0053   NV UP EI PL NZ AC PO NC
13D2:0053 B8004C      MOV   AX,4C00
-d cs:0
13D2:0000AB 09 9A 08 89 07 78 06-67 05 45 03 34 02 23 01   ......x.g.E.4.#.
13D2:001000 00 00 00 00 00 D2 13-D2 13 00 00 51 00 D2 13   ............Q...
13D2:002002 32 9A 08 89 07 78 06-00 00 53 00 D2 13 D9 0D   .2....x...S..... ;出栈后
      出栈之后栈里面的数据又成这样了。= =#
         求解.

nickly8989 发表于 2012-6-20 22:49:11

汇编真心不会,要是C语言还可以帮帮您!!!!!!!!!!!!!!

programmer 发表于 2012-6-20 22:59:36

:'( C和汇编学得都不好。。。

3195884 发表于 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

programmer 发表于 2012-6-21 23:17:46

T中断程序在执行过程中会使用当前栈存放cpu现场的状态数据。自然就会将你栈中的内容更改了。楼主课可以循环一次看一次栈,就会发现栈中的数据一直都在有变化。

programmer 发表于 2012-6-21 23:18:30

找到答案了。谢谢哈。。。
页: [1]
查看完整版本: 关于栈中数据问题 真心求解。