关于栈中数据问题 真心求解。
assume cs:codecode 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..... ;出栈后
出栈之后栈里面的数据又成这样了。= =#
求解.
汇编真心不会,要是C语言还可以帮帮您!!!!!!!!!!!!!! :'( C和汇编学得都不好。。。 汇编学不久 之前没注意搜到一些 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 T中断程序在执行过程中会使用当前栈存放cpu现场的状态数据。自然就会将你栈中的内容更改了。楼主课可以循环一次看一次栈,就会发现栈中的数据一直都在有变化。 找到答案了。谢谢哈。。。
页:
[1]