debug调试中p命令得到的结果与用t命令和直接在dosbox中执行结果不同
本帖最后由 阎秋落 于 2017-2-3 11:10 编辑这个程序是将程序本身的代码复制到0:200地址的内存
assume cs:code
code segment
mov ax, cs
mov ds, ax
mov ax, 0020h
mov es, ax
mov bx, 0
s: mov al,
mov es:, al
inc bx
loop s
mov ax, 4c00h
int 21h
code ends
end
我用dosbox,debug打开程序,如果用p命令跳过循环,结果最后21变成了3
如果用t命令一条一条执行到最后就正确,图片张数限制就不传这个情况的图片了,结果和第三种情况一样
如果在dosbox直接执行程序,然后debug查看内存情况也正确
为什么用p命令会得到不同的结果 花了一点时间,我终于明白了
因为debug要想让程序执行一条指令后停下了,所以使用中断
你在loop指令哪里使用p命令,debug修改loop指令后面那条指令,
0xcc 正是 int 3中断,软件断点中断
http://blog.sina.com.cn/s/blog_495c65790100dpgv.html
人造人 发表于 2017-2-2 14:53
花了一点时间,我终于明白了
因为debug要想让程序执行一条指令后停下了,所以使用中断
你在loop指令哪里 ...
明白了
页:
[1]