风筝1025 发表于 2013-4-21 20:42:20

Debug无故结束,栈中元素为何变化?就指点!

本帖最后由 风筝1025 于 2013-4-21 21:06 编辑

我还没p~p呢程序咋就退了呢?栈中的元素为何会变化?
就是小甲鱼零基础汇编视频第30个,将数据段中的数据逆序存放源程序:assume cs:codesg,ds:data,ss:stack

   data segment
   dw 0123h,0456h,0789h,0abch,0defh,0cbah,0987h,567ah
   data ends
   
   stack segment
   dw 0,0,0,0,0,0,0,0
   stack ends
   
   
codesg segment
   
   x: mov ax,stack
      mov ss,ax
      mov sp,0010h
   
      mov ax,data
      mov ds,ax
   
      mov cx,8
      mov bx,0
s1: push
       add bx,2
       loop s1
   
       mov bx,0
       mov cx,8
s:pop
      add bx,2
      loop s
   
      mov ax,4c00h
      int 21h
   
    codesg ends

end x




1971827035 发表于 2013-4-21 20:42:21

实际上在系统给出正常中断之前,s那部分循环pop出堆栈数据指令已经执行过了。至于此时用t命令不能达到预想的目的。是跟本地系统和编译器有关的。等你学到中断的时候对于此问题会有所了解的。暂且搁下

熊文杰 发表于 2013-4-21 23:50:10

copy了一下楼主的代码 跟了一下,我这边倒是没出现异常退出的情况,但是,我t命令跟的时候发现了,每次pop操作之后 栈的内容确实是变了,这个确实耐人寻味,等待楼下的人给个解答
页: [1]
查看完整版本: Debug无故结束,栈中元素为何变化?就指点!