梦境传说 发表于 2012-11-10 16:25:48

程序6.4调试到循环是直接退出了

assume ds:data, ss:stack, cs:code
data segment

                dw 0123H,0456H,0789H,0abcH,0defH,0fedH,0cbaH,0987H
               
data ends

stack segment

                dw 0,0,0,0,0,0,0,0
               
stack ends

code segment

start:
                mov ax, data
                mov ds, ax
                mov ax, stack
                mov ss, ax
                mov sp, 16
               
                mov bx, 0
                mov cx, 8
s1:                push
                add bx, 2
                loop s1
               
                mov bx, 0
                mov cx, 8
s2:                pop
                add bx, 2
                loop s2
               
                mov ax, 4c00H
                int 21H
               
code ends
end start

上面是程序
debug调试显示如下:


AX=0B8DBX=0008CX=0004DX=0000SP=0008BP=0000SI=0000DI=0000
DS=0B8CES=0B7CSS=0B8DCS=0B8EIP=0013   NV UP EI PL NZ NA PO NC
0B8E:0013 FF37          PUSH                                   DS:0008=0DEF
-t

AX=0B8DBX=0008CX=0004DX=0000SP=0006BP=0000SI=0000DI=0000
DS=0B8CES=0B7CSS=0B8DCS=0B8EIP=0015   NV UP EI PL NZ NA PO NC
0B8E:0015 83C302      ADD   BX,+02
-t

AX=0B8DBX=000ACX=0004DX=0000SP=0006BP=0000SI=0000DI=0000
DS=0B8CES=0B7CSS=0B8DCS=0B8EIP=0018   NV UP EI PL NZ NA PE NC
0B8E:0018 E2F9          LOOP    0013
-t

AX=0B8DBX=000ACX=0003DX=0000SP=0006BP=0000SI=0000DI=0000
DS=0B8CES=0B7CSS=0B8DCS=0B8EIP=0013   NV UP EI PL NZ NA PE NC
0B8E:0013 FF37          PUSH                                   DS:000A=0FED
-t

AX=0B8DBX=000ACX=0003DX=0000SP=0004BP=0000SI=0000DI=0000
DS=0B8CES=0B7CSS=0B8DCS=0B8EIP=0015   NV UP EI PL NZ NA PE NC
0B8E:0015 83C302      ADD   BX,+02
-t
E:\huibian>

最后一个-t单步运行后直接退出了,各位大侠能否帮帮小弟,找出原因呢

               

仰望天上的光 发表于 2012-11-10 16:25:49

这题把堆栈设计得刚好自己程序够用,一点都没多余。这种做法很不好。

LZ线考虑下为什么你按t命令的时候程序会暂停执行?一定是debug里运行了一个内部的小程序对不对?这个小程序也要使用堆栈啊。所以当你的堆栈容量很小的时候执行t命令的小程序使用堆栈的时候就溢出了。

梦境传说 发表于 2012-11-10 16:27:35

自己顶一个,在线等待各位的帮助啊

s0512 发表于 2012-11-11 14:08:29

楼上学的很好。。。直接运行是没问题的。。单步问题就来了

梦境传说 发表于 2012-11-11 22:17:20

仰望天上的光 发表于 2012-11-10 22:56 static/image/common/back.gif
这题把堆栈设计得刚好自己程序够用,一点都没多余。这种做法很不好。

LZ线考虑下为什么你按t命令的时候程 ...

懂了……非常感谢……
页: [1]
查看完整版本: 程序6.4调试到循环是直接退出了