+ -
当前位置:首页 → 问答吧 → 内存0:0-0:15的值是怎么改变的

内存0:0-0:15的值是怎么改变的

时间:2010-11-12

来源:互联网

程序如下
assume cs:code ;功能:想用0:0-0:15的值改写程序中的数据
code segment
  dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
start: mov ax,0
mov ds,ax
mov bx,0

mov cx,8
s: mov ax,[bx]
mov cs:[bx],ax
add bx,2
loop s

mov ax,4c00h
int 21h
code ends
end start
当我debug的时候,首先进去时用d 0:0看来下
0:0-0:15的值如下
-d 0:0
0000:0000 68 10 A7 00 8B 01 70 00-16 00 A1 03 8B 01 70 00
然后我执行第一句 mov ax,0之后再用d 0:0看一下发现变成了如下的内容
-d 0:0
0000:0000 68 10 A7 00 BB 13 A1 05-16 00 A1 03 B1 13 A1 05
这个是为什么呢?望高手指点

作者: qcxhh   发布时间: 2010-11-12

内存0:0开始处保存的中断向量表,你在纯dos下再试试

作者: lizi5803   发布时间: 2010-11-13

具体细节没想清楚。DEBUG的T调用单步中断,单步中断对应的中断后是INT 3,你两次看到的数据变化也只在INT 3的中断向量处。

作者: shzhfu   发布时间: 2010-11-13