- Assembly code
为什么 mov bx,0;这条语句执行后bx = 13e4 ???????????assume cs:code,ds:datadata segment db 10 dup (0)data endsstacksg segment db 10 dup(0)stacksg ends code segmentstart: mov ax, data mov ds,ax mov ax,0b00h mov es,ax mov ax,stacksg mov ss,ax mov sp,30h mov cx,3 mov bx,0;这条语句执行后bx = 13e4 ???? mov si,0 mov cx,3 mov ax,4c00h int 21h code endsend start
------解决方案--------------------------------------------------------
呵呵 我也遇到过这个问题
困扰了我好几天 后来终于搞明白了
当我们用debug调试程序的时候 我们用T命令每执行一条指令,debug会产生中断,并把flag、ip、cs中的值入栈
待执行下一条指令时恢复。 你将sp指向30h 指向了代码段 debug的时候 中断 入栈保存 寄存器中的数据 就会覆盖掉原来的代码 。
你把 sp改成10h就可以了。