search.png
关于我
menu.png
汇编8086中向屏幕显示文字,设置颜色

今天在学汇编,用的王爽老师的《汇编语言》第三版,在实验一的第四题发现了个好玩的,题目是

在这里插入图片描述
在这里插入图片描述

按照题目要求输入了,结果在屏幕上显示出了
在这里插入图片描述
在这里插入图片描述

在屏幕中显示了几个彩色的小符号,研究了一下,感觉挺有意思,b800开始到b8f9分别是屏幕范围内的显示区域

b800 -> b809    // 第一行
b8f0 -> b8f9        // 屏幕最后一行

具体是什么意思呢,也就是,

在这里插入图片描述
在这里插入图片描述

在地址A0000到BFFFF这些空间是属于显存的。
而从b8000开始到b8f9f 这些空间对应的就是显示的屏幕区域。
设置时符合以下规则

66 12H    //H表示这是16进制

以上前两位为一个字节Bytes,表示的是显示的字符是什么,符合ASCII规范,66是什么?66就是6*16+6=102,字符'f',那后两位呢,后两位都是色彩位,其中第三位代表背景色,上边是1,代表蓝色,第四位代表前景色,也就是字符显示出来的颜色,这边是2,代表绿色。

-e b800:0 66 12

结果是在屏幕左上角显示一个f,

在这里插入图片描述
在这里插入图片描述

-e b80a:e 66 12

结果是在屏幕右上角显示一个f,为什么是e不是f,是因为每个字符显示需要2个字节。其中b8000到b809f一共有a0个字节,也就是1016=160字节,这证明了什么呢,证明了屏幕的宽度是80个字符的长度,因为要显示每个字符需要使用四个16进制也就是44=16=2Bytes,两个字节,所以160/2=80,也就证明了可以显示80个字符。

在这里插入图片描述
在这里插入图片描述

事实是否如此呢,尝试打一些数字证实一下,
在这里插入图片描述
在这里插入图片描述

一共打了80个,刚刚好。
而从b8f0开始,就是最后一行,那一共可以显示多少行呢?同样方法计算,最后一行末尾是b8f9f(右下角),b8f9f减去b8000等于fa0,也就是151616 + 10*16 = 4000,那么之前算了一行需要160字节,那么一共就有25行,一共可以显示4000/2=2000个字符。
在这里插入图片描述
在这里插入图片描述

b8f9f右下角。
在这里插入图片描述
在这里插入图片描述

版权声明

知识共享许可协议 本文章由作者“衡于墨”创作,转载请注明出处,未经允许禁止用于商业用途

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。
发布时间:2020年04月15日 20:02:59

评论区#

还没有评论哦,期待您的评论!

关闭特效