- [游客] 原来如此,以前做的时候也是一跳而过 01/10 23:37
- [游客] 赞 03/19 16:36
- [xzg6145] 我到了课程设计1,后面内容比较容易,等学完再复习下,然后写几个小游戏得瑟下,感觉以后很美好!!! 03/26 10:55
- [xiaoyao2012] 人情情人,人随情,情走人止 11/02 15:53
- [fpamc] 回看这篇文章。。 感受颇有不同。。。 我会继续往下走。。。 06/16 10:14
- [dxiaolin] 受教了 05/31 21:21
- [tomato] 支持你弄个chm出来。 05/29 16:33
- [fpamc] 收藏一下……有时间无聊了就弄chm`(*∩_∩*)′ 05/29 14:16
- [tomato] 这些命令刚动手实验了一遍,收获还是蛮大的。 05/29 13:04
- [chinatree] 在c中取段地址: 例: #include <stdio.h> f1() { re 05/27 10:00
- [游客] [url=http://www.banjia126.com/banjiachangshi/92.ht 07/26 23:46
- [jeremy] 能加你扣扣吗?我的469614823 08/07 14:36
- [e56004474] 好久不见tomato 活跃拉。。 06/18 13:39
- [fpamc] 正在研究17章…… 近期路线是…… 17章实验--复习-滚屏算法-截取中断来应用动态时间-复习- 05/29 14:19
- [xuehuihui] 请问检测点2.2的填空地(2)题第一个空到底是10001H对 还是1001H 对?谢谢 急 05/15 16:34
- [gnunix] 我的检测点3.2第二小题的sp设置的有问题吧? 05/13 09:48
- [gnunix] 谢谢番茄老师的提醒,我会改进的! 05/12 12:20
- [fpamc] 好久没见老师了。每当提交完作业,都希望老师快速的批阅。得到老师小小的夸奖。看见同学们都在努力学习,相 05/05 23:16
- [fpamc] 会的,我会的,我一定会做出来的,而且做到我内心所想的,更重要的,不会让tomato老师失望。 我想 04/21 08:42
- [sbxinran] 谢谢tomato老师给我检查作业,如果我的分析方法有错误还请您多指点指点 04/11 12:43
[2012-02-06 13:50] 【原】第一个显存实验的探讨(1)
先把原题目弄上来。
题目如下:
(4)向内存从B8100H开始的单元中填写数据,如:
-e B810:0000 01 01 02 02 03 03 04 04
请读者先填写不同的数据,观察产生的现象;再改变填写的地址,观察产生的现象。
对于这道题目的探讨我们采用提问的方式。
问题1:我知道B810:0000这段内存是显存,我输入这段命令之后没发现有什么现象,我用d命令查看的时候显示的结果并不是我刚才写进去的,是不是显存是只读的,不能写进去啊?
解答:
对于初学者来说,做这道题目可能会遇到以上这些问题的迷惑,最后,做了一遍不了了之,这样做了一遍跟没做没什么差别,并没有掌握作者提供本题目的意图。
如果对这道题目没有意识,再加上显示的结果不够明显和没有认真观察显示结果,这三个原因导致没有观察到显示结果,那我告诉你,因为B810:0000是显存地址,输入上面那条命令之后会在屏幕上显示几个图案,如果之前你没有查看到不妨现在再认真查看一下。
如果在屏幕中查看到这几个图案,那么,我们就可以肯定我们将那些数据写到显存中了,否则,不可能原来没有图案,输入命令之后就有图案了。那么,也可以肯定显存不是只读的,是可以写进去的。
那为什么写进去了,用d命令查看的时候内容却不是我刚才写进去的那些值呢?
是因为屏幕中显示的就是显存中的内容,屏幕中的内容一直在改变,说明显存中的内容一直在改变,而事实也是如此,我们在屏幕中输入命令,然后,在屏幕中显示结果,屏幕中显示的内容一直在变,之所以d命令查看的结果跟我们输入的结果不一样,是因为还没等我们查看到我们输入的数据,已经被其它程序中的数据覆盖掉了。
那我们能够查看到我们输入的数据吗?也就是说我们的数据能否不被其它数据覆盖吗?
可以,在屏幕数据不被充满的时候,屏幕中还有可以显示的空间,我们的数据就不会被覆盖。当屏幕已经充满,如果再显示数据,就需要向上滚屏,那时候,屏幕中下一行的数据就会将上一行的数据覆盖掉。
接下来,我们做一下实验。
查看屏幕中的图案如下:
用d命令查看写入显存位置的数据如下:
屏幕向上滚动,屏幕中的图案不在,显存的内容也不是我们写入的01 01 02 02 03 03 04 04 数据。
此时屏幕是充满的,如果输入数据就会滚屏,所以,我们的数据会被覆盖。下面我们将屏幕清屏,然后,再向显存中输入数据,再用d命令查看显存中的数据。实验如下:
q命令退出debug,cls命令清空屏幕,按下回车后,屏幕被清空,我们再输入写显存命令,然后用d命令查看显存中的值是否被改变,如下:
从上图我们可以看到,清屏后,屏幕没有充满,也就没有滚屏,数据没有被覆盖,此时,用d命令查看的显存中的数据就是我们之前用e命令写入的数据。这个结果看来是合理的。
从上面的实验中,我们可以看到,我们向显存中写入数据会显示在屏幕中,显存是可写的,而不是只读的,之所以,我们查看不到我们想要的结果,是因为屏幕是充满的,我们的数据被其它程序中的数据覆盖掉了。要看到正确的结果,可以使用清屏命令清屏后再查看。
[ chinatree 发表于 2012-02-06 14:41 ]
精湛啊,期待后续作品。
[ 252152130 发表于 2012-02-08 03:00 ]
麻烦你了特地写了篇博文~
原来如此~~...
还有第三题右侧查看ascii码 我有看~~截图没显示全面而已— —,
的确我在第一次做这题目的时候 如同你说的
对于初学者来说,做这道题目可能会遇到以上这些问题的迷惑,最后,做了一遍不了了之,这样做了一遍跟没做没什么差别,并没有掌握作者提供本题目的意图。
后来你的评做了第二次+上你这次写的博客 理解了~~监测点3.1 半天没理解 DS=1 H 后来看了论坛里的提问才知道~~
[ zwq 发表于 2012-05-20 23:41 ]
大牛~~~
[ zwq 发表于 2012-05-20 23:43 ]
LZ为什么屏幕被充满之后显示出来的值就不是我们之前改写的01 01 02 02 03 03 04 04呢?是因为屏幕内容改写了还是....
[ tomato 发表于 2012-05-21 00:15 ]
因为屏幕满了之后,就会将原来屏幕中的值覆盖掉,我们再查看那段显存中的值就不再是我们之前写的那个了。
[ fpamc 发表于 2012-05-21 10:31 ]
过来加深一下印象~~O(∩_∩)O~~
[ 游客 发表于 2017-03-19 16:36 ]
赞
[ 游客 发表于 2018-01-10 23:37 ]
原来如此,以前做的时候也是一跳而过