最近头脑有点发热,又回顾(几年之前看过几遍)了一下汇编语言(第二版,王爽著)。
在第二章快要结束时,有个实验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
额,这难道就是“书读百遍,其义自见”?