. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(CPU工作原理)
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  第二章 2.实验任务(2)的问题  [待解决] 回复[ 11次 ]   点击[ 453次 ]  
lamanouyang
[帖 主]   [ 发表时间:2012-05-24 20:34 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-05-22 15:02
请问一下大家题目里边提供的jmp 2000:0003命令怎么敲啊?

我按照题目要求在2000:0开始的内存单元里边写了那三行代码 按说有敲jmp 并且也没敲错 CS:IP的值应该会变的啊 但是我敲r看寄存器的时候 发现CS还有IP的值都没有变过 还是原来的那个 请问各位高手 这是怎么回事啊?
zhujinwu
[第1楼]   [ 回复时间:2012-05-24 20:57 ]   [引用]   [回复]   [ top ] 
荣誉值:15
信誉值:0
注册日期:2011-11-03 09:29
你应该在还没执行“jmp 2000:0003”这条指令之前就查看寄存器内容了吧,那是肯定不会变化的,要在执行完这条指令之后,再查看各寄存器的内容,你就会发现cs和ip发生变化了。另外,这条指令只是在debug下是正确的,如果是在文本编辑模式下,这条指令是错误的。
lamanouyang
[第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

大哥可知道这是啥问题啊?
zhujinwu
[第3楼]   [ 回复时间:2012-05-25 13:20 ]   [引用]   [回复]   [ top ] 
荣誉值:15
信誉值:0
注册日期:2011-11-03 09:29
不可能啊,你截个图上来看看。
lamanouyang
[第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里边复制过来的 您帮我看看到底是有啥问题
lamanouyang
[第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已经改过来了

谢谢大哥了
hysteriant
[第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了
ot88to
[第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
第一题呢 老是错误是什么回事啊
fpamc
[第8楼]   [ 回复时间:2012-10-06 07:54 ]   [引用]   [回复]   [ top ] 
荣誉值:30
信誉值:4
注册日期:2012-01-01 16:36
回复:[第7楼]
------------------
在debug中默认是16进制。不需要加H
直接的
mov ax,4e20就行。
happy5073
[第9楼]   [ 回复时间:2012-10-11 21:08 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-10-11 21:05
请问每一节的题目在哪儿找?求链接。。。。谢谢!
fpamc
[第10楼]   [ 回复时间:2012-10-11 23:05 ]   [引用]   [回复]   [ top ] 
荣誉值:30
信誉值:4
注册日期:2012-01-01 16:36
回复:[第9楼]
------------------
书里,或者。
http://www.asmedu.net/actions/test.jsp
ot88to
[第11楼]   [ 回复时间:2012-11-11 21:09 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-09-25 19:43
执行一下哇
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved