关于屏幕属性和滚屏

关于屏幕属性和滚屏

乍看题目,可能以为我是个高手,嘎嘎。其实非也!从2010126日开始,正式加入王老师(王爽)的学习活动,我们的现在的学习课程就是汇编,很有意思的一门语言。以前的课程是有汇编的,虽然考试的时候也拿了个不错的成绩,可那也就是考试前突击的结果。实际上对这门语言的实质并不了解,只是简单的知道一些表面的东西。现在有这个机会跟王老师学习,感觉自己很幸运啊。

废话少说,开始咱今天的正题:

首先,提个问题:为什么我们用cmd进入虚模式的doc界面,输debug,可以用一些RATUED等命令。展示在我们面前的界面是黑底白字,我们是否可以进行更改?

第一,      进入doc时,输入是黑底白字,应该是系统这么安排的,不关我们的事,那么我们是否可以对它进行更改呢?答案是肯定的。

   首先我们要知道,为什么我们在B800:0B800:F0F改写内容时,很简

单,这块显存的内容对应的我们的显示器的当前页,也就是可以展示给我们

的这一页。我们知道,在doc中,一行可以显示80个字符,但它是由160个字

节控制的。那么那80个字节干吗去了?跑了不成?呵呵,当然不是。屏幕上

的每个字符时由两个字节控制的,第一个字符是咱们要显示的内容,它的下

一个字节用来控制它的属性(比如用什么形式来显示第一个字符)。那么我

们怎么来改变我们屏 幕的属性呢?

    让我们来做个操作:进入debug,输入 e B800:F00 71 71 71 71 71 然后回车,发现了什么?是的,屏幕的最后一行的前几个字符变白底蓝字了。让我们继续输入回车,不管我们输入多少次回车,只要我们当前页全部显示完之后,接下来的屏幕全部是白底蓝字。这是为什么呢?

   我们可以做个假设,①当我们改变显存 B800:0B800:F0F的某一块的内容时,接下来(因为是滚屏)显存的内容都会经过我们改的这一块内存单元,所以属性就跟着改了。②当前屏显示完后,接下来的一屏是由B800:F01 这个字节来控制的。

   假设①是成立的,我们再来做个小操作 (如果你当前页面时白底蓝字的话)e B800:A0 7 7 7 7 然后回车,我们发现屏幕的第二行的前几个字符颜色又发生了变化,变成了黑底白字。然后我们再按回车,??很奇怪,接下来的仍然是白底蓝字,并没有发生变化。可想而知,我们的第一种假设是错误的。让我们来看第二种假设是否成立。如果我们改变了整个屏幕除了B800:F01这个位置,我们看接下来的一屏是否会发生变化,没有。这就证明我们的第二种假设是成立的吗?这样下结论似乎有些牵强。那就让我们再来操作一下吧

  实验过程1

 

实验过程2

我们发现当执行最后一句,即将显存B800:F01出的内容改为 7 这条

指令执行后接下来的一屏属性发生了变化,变成了黑底白字。好的,

我们用程序有做了测试,别问我,机器已经告诉我们第二种假设是成

立的。

 

关于滚屏,经过前面的介绍,估计大家已经能想到了。因为我们的当前屏幕

只显示,而且是一直显示B800:0B800:F0F这一页的内容。我们如果想要在

当前屏幕上显示一些内容,也只是在这一地址范围内操作。可想而知,它的

滚屏机制就相当于一个圆筒,从B800:0B800:F0F 编号,当第一屏显示完

之后,接下来要显示的内容又从B800:0开始,只不过现在的内容已经不是最

开始时的内容了。之前的内容已经被新的内容覆盖了。

 

   我是这么理解的,如果有什么理解偏差或理解不到的地方,还请

高手们放过小妹一把,多多指教。

                         2010.12.12 信息院实验楼   寇晓红

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是一个简单的实现文字滚屏的 HTML 和 CSS 代码: ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>文字滚屏</title> <style type="text/css"> body { margin: 0; padding: 0; overflow: hidden; } .container { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); white-space: nowrap; animation: scroll 20s linear infinite; } .text { font-size: 36px; font-weight: bold; margin-right: 50px; display: inline-block; vertical-align: middle; } @keyframes scroll { 0% { transform: translateX(0%); } 100% { transform: translateX(-100%); } } </style> </head> <body> <div class="container"> <span class="text">这是一段滚动的文字</span> <span class="text">这是一段滚动的文字</span> <span class="text">这是一段滚动的文字</span> <span class="text">这是一段滚动的文字</span> <span class="text">这是一段滚动的文字</span> </div> </body> </html> ``` 在这个例子中,我们使用了 `position: absolute` 和 `transform: translate(-50%, -50%)` 来将文字容器居中。我们设置了文字容器为 `white-space: nowrap`,这样文字就不会自动换行。然后,我们使用动画 `@keyframes` 和 `transform: translateX(-100%)` 来让文字容器水平移动并实现滚动的效果。最后,我们将文字容器的 `animation` 属性设置为 `20s linear infinite`,这使得滚动动画持续时间为 20 秒,并且持续无限次。 有了这些 CSS,我们只需要在 HTML 中添加需要滚动的文字,并将它们包裹在一个容器中即可。在这个例子中,我们使用了 5 个 `<span>` 元素作为需要滚动的文字。你可以根据需要更改这些文字内容和数量。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值