|
主题 : : 第二章 2.实验任务(2)的问题 [待解决] |
回复[ 11次 ]
点击[ 453次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2012-05-24 20:34 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2012-05-22 15:02 |
请问一下大家题目里边提供的jmp 2000:0003命令怎么敲啊?
我按照题目要求在2000:0开始的内存单元里边写了那三行代码 按说有敲jmp 并且也没敲错 CS:IP的值应该会变的啊 但是我敲r看寄存器的时候 发现CS还有IP的值都没有变过 还是原来的那个 请问各位高手 这是怎么回事啊? | | |
|
|
|
|
[第1楼]
[ 回复时间:2012-05-24 20:57 ]
[引用]
[回复]
[ top ] | |
荣誉值:15
信誉值:0
注册日期:2011-11-03 09:29 |
你应该在还没执行“jmp 2000:0003”这条指令之前就查看寄存器内容了吧,那是肯定不会变化的,要在执行完这条指令之后,再查看各寄存器的内容,你就会发现cs和ip发生变化了。另外,这条指令只是在debug下是正确的,如果是在文本编辑模式下,这条指令是错误的。 | | |
|
|
|
|
[第2楼]
[ 回复时间:2012-05-25 11:08 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2012-05-22 15:02 |
回复:[第1楼]
------------------
我试了一下还是不行啊 按r还是以前的CS:IP值
我敲的命令式这样的
debug
a 2000:0
mov ax, 1
add, ax, ax
jmp 2000:0003
回车之后再按r去看寄存器的内容 发现左下的CS:IP仍旧是CPU自己的 没有变成我设置的2000:0003
大哥可知道这是啥问题啊? | | |
|
|
|
|
[第3楼]
[ 回复时间:2012-05-25 13:20 ]
[引用]
[回复]
[ top ] | |
荣誉值:15
信誉值:0
注册日期:2011-11-03 09:29 |
|
|
|
|
|
[第4楼]
[ 回复时间:2012-05-25 13:52 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2012-05-22 15:02 |
回复:[第3楼]
------------------
C:\Windows\System32>debug
-a 2000:0
2000:0000 jmp2000:0003
2000:0002
-r
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0B41 ES=0B41 SS=0B41 CS=0B41 IP=0100 NV UP EI PL NZ NA PO NC
0B41:0100 3C3D CMP AL,3D
-t
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0B41 ES=0B41 SS=0B41 CS=0B41 IP=0102 NV UP EI NG NZ AC PE CY
0B41:0102 7506 JNZ 010A
-
这就是直接从dos里边复制过来的 您帮我看看到底是有啥问题 | | |
|
|
|
|
[第5楼]
[ 回复时间:2012-05-25 14:09 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2012-05-22 15:02 |
回复:[第3楼]
------------------
囧~~ 我貌似已经知道原因了 我之前敲的代码都是在2000:0开始的这个内存单元里 但是我机器本身是从0B41:100这个内存单元开始读的 所以我不管怎么按T还有R都不会显示CS:IP修改了 得一直敲到CS:IP变成2000:0才能读取到我jmp的命令 这之后才能执行修改 我刚才试了a之后直接在现在这个内存单元0B41:100里边写jmp 再t执行之后 CS:IP已经改过来了
谢谢大哥了 | | |
|
|
|
|
[第6楼]
[ 回复时间:2012-06-28 19:54 ]
[引用]
[回复]
[ top ] | |
荣誉值:2
信誉值:0
注册日期:2011-12-15 15:16 |
回复:[第3楼]
------------------
囧~~ 我貌似已经知道原因了 我之前敲的代码都是在2000:0开始的这个内存单元里 但是我机器本身是从0B41:100这个内存单元开始读的 所以我不管怎么按T还有R都不会显示CS:IP修改了 得一直敲到CS:IP变成2000:0才能读取到我jmp的命令 这之后才能执行修改 我刚才试了a之后直接在现在这个内存单元0B41:100里边写jmp 再t执行之后 CS:IP已经改过来了
谢谢大哥了
------------------
回复:
你可以这样。。。
r cs
2000
r ip
0
。。。即可从20000h的位置开始执行jmp了 | | |
|
|
|
|
[第7楼]
[ 回复时间:2012-10-05 11:03 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2012-09-25 19:43 |
CS 13DC
:1000
-r ip
IP 0100
:0000
-a 1000:0000
1000:0000 mov ax,4E20H
^ Error
第一题呢 老是错误是什么回事啊 | | |
|
|
|
|
[第8楼]
[ 回复时间:2012-10-06 07:54 ]
[引用]
[回复]
[ top ] | |
荣誉值:30
信誉值:4
注册日期:2012-01-01 16:36 |
回复:[第7楼]
------------------
在debug中默认是16进制。不需要加H
直接的
mov ax,4e20就行。 | | |
|
|
|
|
[第9楼]
[ 回复时间:2012-10-11 21:08 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2012-10-11 21:05 |
|
|
|
|
|
[第10楼]
[ 回复时间:2012-10-11 23:05 ]
[引用]
[回复]
[ top ] | |
荣誉值:30
信誉值:4
注册日期:2012-01-01 16:36 |
|
|
|
|
|
[第11楼]
[ 回复时间:2012-11-11 21:09 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2012-09-25 19:43 |
|