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
实际上在系统给出正常中断之前,s那部分循环pop出堆栈数据指令已经执行过了。至于此时用t命令不能达到预想的目的。是跟本地系统和编译器有关的。等你学到中断的时候对于此问题会有所了解的。暂且搁下 copy了一下楼主的代码 跟了一下,我这边倒是没出现异常退出的情况,但是,我t命令跟的时候发现了,每次pop操作之后 栈的内容确实是变了,这个确实耐人寻味,等待楼下的人给个解答
页:
[1]