今天在学汇编,用的王爽老师的《汇编语言》第三版,在实验一的第四题发现了个好玩的,题目是
按照题目要求输入了,结果在屏幕上显示出了
在屏幕中显示了几个彩色的小符号,研究了一下,感觉挺有意思,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右下角。
版权声明
本文章由作者“衡于墨”创作,转载请注明出处,未经允许禁止用于商业用途
评论区#
还没有评论哦,期待您的评论!
引用发言