关于一个初级DEBUG问题。

Troy0523 2006-09-21 05:51:55
assume cs:code
a segment
dw 1,2,3,4,5,6,7,8
a ends

b segment
dw 0,0,0,0,0,0,0,0
b ends

code segment
start:
mov ax,b
mov ss,ax
mov sp,16
mov ax,a
mov ds,ax
mov cx,8
sub bx,bx
lp1:
push ds:[bx]
add bx,2
loop lp1
mov bx,0
mov cx,8
lp2:
pop ds:[bx]
add bx,2 ;就是这里 注意
loop lp2
mov ax,4c00h
int 21h
code ends
end start

这个是用栈让数组倒过来排的程序,。
怎么我用debug调式时 一步一步的运行到 上面有注释的代码这里
就出现了
Program terminated normally
然后再用命令T 就跳出了debug啊?怎么回事啊。我晕
...全文
335 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
MARY_CLOVER 2006-10-12
  • 打赏
  • 举报
回复
楼上的好厉害呀,我也是初学者,有问题的话是不是可以和你多交流呢,我的QQ :290601356
wankong 2006-10-05
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/topic/5044/5044839.xml?temp=.7642176
和这个问题很类似,是因为堆栈越界造成的,因为DEBUG中T命令会引发程序自陷,需要使用堆栈,而本身只分配8个字的堆栈,造成占用堆栈越界,只要将SP改为26,段b分配13个空间就不会造成错误了,其实看下错误提示,是CS:0003,IP:0017,是弹栈时造成指令跳转错误造成的。
大熊猫侯佩 2006-09-25
  • 打赏
  • 举报
回复
有类似的帖子,好像就是你发的

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧