当前位置: 代码迷 >> 汇编语言 >> 编译语言,在debug窗口中修改寄存器CS、IP中的值
  详细解决方案

编译语言,在debug窗口中修改寄存器CS、IP中的值

热度:597   发布时间:2016-05-02 04:48:44.0
汇编语言,在debug窗口中修改寄存器CS、IP中的值
最近头脑有点发热,又回顾(几年之前看过几遍)了一下汇编语言(第二版,王爽著)。

在第二章快要结束时,有个实验1(查看CPU和内存...)。
其中有一个实验任务是修改寄存器CS和IP中的值。

当时书没看仔细(估计是看了好几遍的缘故,有点麻木),没有看明白是如何修改CS和IP的值,加上前面的一节中有讲到如何通过使用jmp指令修改CS和IP,于是想在debug窗口中直接使用jmp指令修改CS和IP,结果出现如下错误。


出现了一个Error,当时就很纳闷,于是百度了一下,发现了有几篇文章也是遇到了这个问题(或许和我想的不是同一个问题),但是它们没有给出解决方案。
只好把这个章节又看了一篇,当时很怀疑能否使用R命令修改CS和IP,结果试了一下竟然成功了,恍然大悟,原来是我理解错了,jmp是用于指令执行的时候修改CS和IP,而不是在debug中直接修改,下图就是正确的修改方式。


#jmp指令的执行。
#在内存地址1000:0写入一段指令。
-a 1000:0
1000:0000 mov ax,1
1000:0003 mov bx,2
1000:0006 jmp 1000:0
1000:0008

#修改寄存器CS和IP的值。
-r cs
cs 0AF4
:1000
-
-r ip
ip 0011
:0

#执行一条指令(mov ax,1),执行之后IP的值为0003。
-t

#执行一条指令(mov bx,2),执行之后IP的值为0006。
-t

#执行一条指令(jmp 1000:0),执行之后IP的值为0000。
-t


额,这难道就是“书读百遍,其义自见”?
  相关解决方案