. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(内存访问)
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  在debug中的一个小发现(菜鸟飞进来)  [待解决] 回复[ 10次 ]   点击[ 1098次 ]  
manhun
[帖 主]   [ 发表时间:2010-01-14 19:20 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-01-13 16:55
首先我在xp的command中进入debug(为了充分表达无奈请原谅我的啰嗦)
现在就只会r、d、e、a、u、t这六个命令,根据书中的要求经常要在r命令和内存特定地址中来回观察,
一般情况下r命令已经足够简单快捷,而定位到内存特定地址中进行操作的时候却要大幅度重复地输入段
地址,这让人很不爽啊~~~~幸而在我无意的使用中发现一个使用的小技巧
如果你现在在debug中输入r并回车,假设你可以发现ds、cs、ip这几个鸟货的值分别是(当然你可以手
动修改)2000、1000、0007~~~~ok,
我现在要查看2000:0000~2000:000f这一行的值,ok
我得输入-d 2000:0 f并回车,哦~我看到啦,我还要看2000:500~2000:700的值,
继续输入-d 2000:500 700
我又看到啦,真多东西,接着我要看2000:1000~2000:1050的值,继续-d 2000:1000 1050回车~~
啊,不好 我要编写一句mov dx,90在1000:0002起点单元,那我要-a 1000:0002
                                                     1000:0002 mov dx,90回车
还要看..............
--------------------------------------------------------------------------------
段地址就是这么烦人,一不小心还可能少写一个0或多写一个0,哦,要重写,写几次是不要紧的但如果你
需要一直重复输入呢?我是菜鸟,经常在那几个好记顺手的内存地址写代码做实验并在寄存器和这些个
固定内存地址中来回观察,因为地址换来换去会头晕~~ - -b 废话就到此了
---------------------------------------------------------------------------------
于是,我不小心发现,用e、d命令查看和修改在此偏移址上的内存数据时,
d命令可以单独使用,
-d回车  会显示你上一个-d命令的后续128个地址的数据
-d 0回车   会显示以你当前ds偏移0000的后续128个地址
-d 0 9回车   会显示当前ds偏移0000到0009的十个地址;-d 0 f就是一整行了~~
如:ds=2000时 x为某可以的数据
      -d 10 1f回车
       2000:0010 xx xx xx xx xx xx xx xx-xx xx xx xx xx xx xx xx   ................
e命令也是以ds值为基础的,但是 -e回车是error
-e 0回车 会出现2000:0000 xx._和-e 2000:0000回车是一样的效果
-e 2020回车  会出项2000:2020
总结一下:当ds=xxxx时-d>显示你上一个d命令接续的128个地址,与ds的值无关
          当ds=xxxx时-d 000x>显示xxxx(ds):000x起点的后续的128个地址=-d x
          当ds=xxxx时-d 000x 000x>显示xxxx:000x到xxxx:000x的值=-d x x(当然,前x<=后x)
a命令也可以单独使用
当cs=xxxx时
-a出现为你上一个-a命令所使用的命令的末行地址(也就是空出来做退出使用的那一行的地址,与cs的值无关,上次写到哪用来接着写)
-a x出现为xxxx(cs):000x _
u命令
-u 接着上次翻译的末尾继续翻译,默认是几行忘了- -b
-u x 翻译以xxxx(cs):000x为开头的默认行数(应该是- -b)
-u x x翻译以xxxx(cs):000x到xxxx(cs):000x附近的行数(应该是与命令的分辨有关)
t命令
-t 运行当前cs与ip构成的地址的指令
-t x从cs与ip构成指向的地址开始运行x条指令
----------------------------------------------------
若是刚进debug则可单独使用的命令都以刚进入时的ds、cs、ip中的值为依据

好了,就是这样了,如果已经早有人发现了只是没有写出来的同学请举手~~~~~~
以后想要频繁的访问某一个地址时就可以根据需要先设定好相关寄存器的值,然后再简写,啊~~~轻松好多;)
manhun
[第1楼]   [ 回复时间:2010-01-15 19:21 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-01-13 16:55
我靠,原来后面都有写了,不好意思请管理删掉吧
bigbigwolf
[第2楼]   [ 回复时间:2010-01-19 14:11 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:0
注册日期:2010-01-13 10:56
楼主能先想到,很厉害,自发思考的意识也很强。
csusuntao
[第3楼]   [ 回复时间:2010-01-21 22:12 ]   [引用]   [回复]   [ top ] 
荣誉值:3
信誉值:2
注册日期:2010-01-04 23:00
楼主真的很厉害啊。先不说其他,楼主的debug肯定用的超级熟练啦 熟能生巧!
plagueing
[第4楼]   [ 回复时间:2010-06-14 16:18 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:0
注册日期:2009-07-16 14:51
书上有介绍
woaiballack
[第5楼]   [ 回复时间:2010-08-04 10:44 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-06-04 13:13
好贴,不在内容,在于楼主勤奋思考,刻苦钻研的精神!
值得每一个人好好学习!
manhun
[第6楼]   [ 回复时间:2010-08-20 14:31 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-01-13 16:55
很久没来了,没想到竟然被推荐上了-v-意外耶~
manhun
[第7楼]   [ 回复时间:2010-08-20 14:33 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-01-13 16:55
不过让人不爽的就是我们再怎么学也不过是去遵守cpu厂商和存储单元制造商们制造的规则,超不爽
guoshuang629
[第8楼]   [ 回复时间:2010-08-22 10:55 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-08-22 10:52
楼主的帖子虽然说后来的书上有介绍 但是我相信楼主是自己先想到的 楼主的这种学习方式 值得我们学习 这样看书这样学习才来的透彻 向楼主致敬
iyt
[第9楼]   [ 回复时间:2010-08-27 11:50 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-08-25 18:20
书有上介绍,不过自己发现,记忆更深刻
le1949
[第10楼]   [ 回复时间:2010-10-26 14:08 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-09-17 09:33
回复:[贴 主]
------------------
楼主确实喜欢思考  不过我发现有个方法可以任意改输错的命令   先在记事本里面编写(记事本里面的内容可以任意修改) 然后直接粘贴到debug命令中 方法是右击命令框中的编辑下的粘贴即可
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved