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

最近头脑有点发热,又回顾(几年之前看过几遍)了一下汇编语言(第二版,王爽著)。

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

当时书没看仔细(估计是看了好几遍的缘故,有点麻木),没有看明白是如何修改CS和IP的值,加上前面的一节中有讲到如何通过使用jmp指令修改CS和IP,于是想在debug窗口中直接使用jmp指令修改CS和IP,结果出现如下错误。
[img]http://dl.iteye.com/upload/picture/pic/127537/6c9c1643-19e6-3956-a4cb-fc9ee7d39ea8.jpg[/img]

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

#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


额,这难道就是“书读百遍,其义自见”?
  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值