鱼C论坛

 找回密码
 立即注册
查看: 1734|回复: 7

王爽《汇编语言》的一句话,求解释!

[复制链接]
发表于 2013-10-12 13:26:22 | 显示全部楼层 |阅读模式
1鱼币
QQ图片20131012132249.jpg 画红线的句子,这句话怎么理解。是说我们用debug看到的不是当前内存中的内容,而是电脑刚开机时的内容?  还是怎样?

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-10-12 14:17:38 | 显示全部楼层
本帖最后由 福禄娃娃 于 2013-10-12 14:38 编辑

这句话的意思是用debug查看的内存内容是时时刻刻在变化的,不同的计算机不一样,同一台计算机不同时刻也不一样。硬盘中的程序和数据都需要加载进内存才能被CPU读取,因为指令和数据会发生改变,所以内存中的内容也在不停的变化着。比如说用debug查看显存内容,这一刻和下一刻的内容肯定不同。

以上所有前提是在DOS下查看,windows下用debug无法修改内存内容,修改后再次运行debug内容还是之前的样子。windows处于保护模式下,禁止这些危险的操作。


你可以试试:在debug下用e指令修改内存内容,然后再运行一个debug,会发现内容并没有被改变。如果修改到了操作系统的程序代码处,会弹出对话框:显示什么什么错误!让你关闭debug!想修改系统用debug也做不到。


在windows可以用OD加载一个程序看看,然后单步调试,接着可以观察到内存内容的变化。


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-10-12 14:18:33 | 显示全部楼层
意思是可能每次(不同次)用DEBUG看同一块内存,结果内容不同
举个例子:
比如第一次-d 0:1033看到内存里的值或许是33
然后你第二次启动debug 来-d 0:1033看到的内存的值可能就变成45
当然具体变成什么是无法确定的,如上面所说,这个受系统环境的影响。是不可或难以确定的。
同一台计算机都可能不一样,所以在不同的计算机也可能是不一样的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-10-12 15:54:21 | 显示全部楼层
真实的,此刻的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-10-12 17:13:32 | 显示全部楼层

额。的确。在一个debug中修改了一个内存的值后,再打开一个去查看并没有变化。(不过我的电脑初始的时候内存数据都是“00”)。     版主,我觉得我很有必要问你两个问题,一、其实我还不懂什么是DOS模式,和window模式有什么不一样?        二、既然说debug其实并没有改变内存的值,那这个debug到底是用来做什么的,它有什么用?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-10-12 18:35:57 | 显示全部楼层
小家伙别怕 发表于 2013-10-12 17:13
额。的确。在一个debug中修改了一个内存的值后,再打开一个去查看并没有变化。(不过我的电脑初始的时候内 ...

1. DOS不是模式,DOS(Disk Operation System)是微软以前的一个操作系统,没有图形界面只有命令行,一次只能运行一个程序,在黑乎乎的命令行下完成任务,DOS Box就是模拟Dos的一个软件。
2. debug可以修改当前的内存值,可以用来调试程序。你编译、链接一个.asm的源码后,有时不理解或者为了理解这个程序在执行的时候到底干了什么,调试可以帮你寻找bug、理解程序、看的到寄存器和内存的变化。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-10-13 13:21:21 | 显示全部楼层
福禄娃娃 发表于 2013-10-12 14:17
这句话的意思是用debug查看的内存内容是时时刻刻在变化的,不同的计算机不一样,同一台计算机不同时刻也不一 ...

恩,说得对,厉害,支持,支持,^_^
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-10-13 18:46:31 | 显示全部楼层
是这样的,当一个程序运行的时候需要占用内存,然后这段内存使用时期会不断变化或者不变化,但是关闭之后会怎么?当然是保留不变,试想一下计算机关闭一个程序,再去刷新那段内存(内存全置0)是不是很麻烦?(消耗内存)所以,计算机决定,把那段内存保留不变(程序使用完之后不会尝试去寻找那段被使用的内存并且全置0,只是把他从程序中释放出来),当用户再次使用的时候,(这里假设程序是使用那段内存)程序自然会修改哪些内存的内容,使他改变或者其他情况
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-13 05:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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