鱼C论坛

 找回密码
 立即注册
查看: 3044|回复: 14

Debug32奇怪的问题

[复制链接]
发表于 2014-10-29 00:40:45 | 显示全部楼层 |阅读模式
10鱼币
我用Debug32在Windows 7 x86下作这个实验
将下面3条指令写入从2000:0开始的内存单元中,利用这3条指令就算2的8次方。
mov ax,1
add ax,ax
jmp 2000:0003

当执行完mov ax,1这条指令之后,就出现Trace Interrupt,然后内存中的指令全部消失了,为何会这样的呢?
QQ图片20141029004020.jpg

QQ图片20141029002342.jpg

最佳答案

查看完整内容

第一张图 0x2000:0x0000里的代码是mov ax, 00001h, 机器码是0xB80100 (3个字节),但是执行后ax的值没有改变,而IP加的是2,不是3 第二张图,你写入的代码出现在了1FFF:0010后面,试下-u 2000:0000,看有没有你写入的代码,把图贴出来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-10-29 00:40:46 | 显示全部楼层
第一张图 0x2000:0x0000里的代码是mov ax, 00001h, 机器码是0xB80100 (3个字节),但是执行后ax的值没有改变,而IP加的是2,不是3
第二张图,你写入的代码出现在了1FFF:0010后面,试下-u 2000:0000,看有没有你写入的代码,把图贴出来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-10-29 15:44:10 | 显示全部楼层
我刚看过这个视频,在这个网站注册了,但是权限不够提问题。借这位提问者楼层问下我的问题。如图,汇编语言入门视频12集的内容,小甲鱼用-e命令修改fff0:00f5的值得时候,用了 -e ffff:05。这里问题就来了,为什么不是写成-e fff0:f5呢?我试了貌似都可以,但是不懂小甲鱼的怎么理解它们的转换
3XZ)}@9HUB$BKO2N]RPQ{FK.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-10-29 18:19:59 | 显示全部楼层
楼主辛苦了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-10-29 19:32:43 | 显示全部楼层
回2楼,都是可以的。
对CPU来说效果是一样的,用-e ffff:5明显简洁得多!
怎样分段是人的思想,同一个地址会有不同的分段方式可以到达,所以有多个过程得出同一个结果,不过你注重的过程,CPU只看结果,CPU才不在乎你这个地址是怎么来的……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-10-29 20:35:21 | 显示全部楼层
Aegis 发表于 2014-10-29 19:32
回2楼,都是可以的。
对CPU来说效果是一样的,用-e ffff:5明显简洁得多!
怎样分段是人的思想,同一个地 ...

-e ffff:5确实更简洁。可是我初学,不太懂,你能不能给我讲讲怎么转换,怎么用,ffff和fff0不是不一样的段吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-10-29 21:01:38 | 显示全部楼层
fff0:00f5 = fff0*16 + 00f5 = fff00 + 00f5 = ffff5
ffff:5       = ffff*16 + 0005 = ffff0 + 0005 = ffff5

道理跟12345可以是12340+5或者是12300+45一样的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

头像被屏蔽
发表于 2014-10-30 17:45:08 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-10-30 20:22:39 | 显示全部楼层
风之残月 发表于 2014-10-30 20:13
第一张图 0x2000:0x0000里的代码是mov ax, 00001h, 机器码是0xB80100 (3个字节),但是执行后ax的值没有改 ...

你好,谢谢你的回复!
2000:0中的代码是正常的,因为1FFF:0010其实就是2000:0
我后来想起来32位的Win 7是有自带Debug的,用自带的就好了
用Debug32确实有点奇怪,不过这个软件本来就是为64位Windows而设的,不应该用在32位系统上!
谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-10-30 20:28:18 | 显示全部楼层
Aegis 发表于 2014-10-30 20:22
你好,谢谢你的回复!
2000:0中的代码是正常的,因为1FFF:0010其实就是2000:0
我后来想起来32位的Wi ...

:sweat:忘了1FFF:0010就是2000:0000,建议楼主在虚拟机里面安装一个DOS吧,windows虚拟的DOS有时候会出问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-10-30 21:57:24 | 显示全部楼层
风之残月 发表于 2014-10-30 20:28
忘了1FFF:0010就是2000:0000,建议楼主在虚拟机里面安装一个DOS吧,windows虚拟的DOS有时候会出问 ...

我有纯DOS的虚拟机,编辑起来不是太方便,屏幕太小了点,再说迟早得要向Windows或者其他有界面有编辑器的操作系统上进行汇编的发展。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-10-31 00:12:14 | 显示全部楼层
Aegis 发表于 2014-10-29 21:01
fff0:00f5 = fff0*16 + 00f5 = fff00 + 00f5 = ffff5
ffff:5       = ffff*16 + 0005 = ffff0 + 0005 = ff ...

也就是,只要最终是ffff5的结果就行是吧,有点懂了。谢谢你的回答!
额,但是,那个,看图片左边那些地址吧,fff0:0000~fff0:00f0,总共有16*16个地址(是这个意思吧?),最后一个应该就是fff0:00ff吧?这个跟ffff:000f是同一个地址吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-10-31 09:04:24 | 显示全部楼层
moonjer 发表于 2014-10-31 00:12
也就是,只要最终是ffff5的结果就行是吧,有点懂了。谢谢你的回答!
额,但是,那个,看图片左边那些地 ...

是的
是的
是的

如果还没完全弄明白,建议还是看看课本和视频,8086的汇编没有一个代码例子不在使用 CS、DS、SS+偏移地址 的,不懂这个简直就等于不懂呼吸一样,没法活!当然,弄清楚这个简直就等于学懂呼吸一样,没难度!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-11-4 16:55:02 | 显示全部楼层

谢谢,谢谢!好好学着。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-12-22 19:49:53 | 显示全部楼层
moonjer 发表于 2014-10-29 15:44
我刚看过这个视频,在这个网站注册了,但是权限不够提问题。借这位提问者楼层问下我的问题。如图,汇编语言 ...

就是因为都可以  啊   前面是段地址 后面是偏移  只要加起来一样  你想怎么写怎么写  如ff00:0ff5  这样也是可以的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-7 00:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表