程序6.4调试到循环是直接退出了
assume ds:data, ss:stack, cs:codedata 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单步运行后直接退出了,各位大侠能否帮帮小弟,找出原因呢
这题把堆栈设计得刚好自己程序够用,一点都没多余。这种做法很不好。
LZ线考虑下为什么你按t命令的时候程序会暂停执行?一定是debug里运行了一个内部的小程序对不对?这个小程序也要使用堆栈啊。所以当你的堆栈容量很小的时候执行t命令的小程序使用堆栈的时候就溢出了。 自己顶一个,在线等待各位的帮助啊 楼上学的很好。。。直接运行是没问题的。。单步问题就来了 仰望天上的光 发表于 2012-11-10 22:56 static/image/common/back.gif
这题把堆栈设计得刚好自己程序够用,一点都没多余。这种做法很不好。
LZ线考虑下为什么你按t命令的时候程 ...
懂了……非常感谢……
页:
[1]