当前位置: 代码迷 >> 汇编语言 >> x86汇编 为啥 mov bx,0 后 bx不等于0?请高手指教
  详细解决方案

x86汇编 为啥 mov bx,0 后 bx不等于0?请高手指教

热度:7546   发布时间:2013-02-26 00:00:00.0
x86汇编 为什么 mov bx,0 后 bx不等于0????请高手指教
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就可以了。
  相关解决方案