编程:在屏幕中间分别显示绿色、绿底红色、白底蓝色的字符串'welcome to masm!'
80*25彩色字符模式显示缓冲区的结构:
内存地址空间中,B8000H~BFFFFH共32KB的空间,为80*25彩色字符模式的显示缓冲区。向这个地址空间写入数据,写入的内容将立即出现在显示器上。
在80*25彩色字符模式下,显示器可以显示25行,每行80个字符,每个字符可以有256中属性(背景色、前景色、闪烁、高亮等组合信息).
这样,一个字符在显示缓冲区中就要占两个字节,分别存放字符的ASCLL码和属性。80*25模式下,一屏的内容在显示缓冲区共占4000个字节。
显示缓冲区分为8页,每页4KB,显示器可以显示任意一页的内容。一般情况下,显示第0页的内容。也就是说通常情况下,B8000H~B8F9FH中的4000个字节的内容将出现在显示器上。
在一页显示缓冲区中:
偏移000~09F对应显示器上的第1行(80个字符占160个字节);
偏移0A0~13F对应显示器上的第2行;
偏移140~1DF对应显示器上的第3行;
以此类推,可知偏移F00~F9F对应显示器上的第25行。
在一行中,一个字符占两个字节的存储空间(一个字),低位字节存储字符的ASCLL码,高位字节存储字符的属性。一行共有80个字符,占160个字节。
即在一行中:
00~01单元对应显示器上的第1列;
02~03单元对应显示器上的第2列;
04~05单元对应显示器上的第3列;
依此类推,可知,9E~9F单元对应显示器上的第80列。
例如:在显示器的0行0列显示黑底绿色的字符串'ABCDEF'
('A'的ASCLL码值为41H,02H表示黑底绿色)
显示缓冲区里的内容为:

可以看出,在显示缓冲区中,偶地址存放字符,奇地址存放字符的颜色属性。
一个在屏幕上显示的字符,具有前景(字符色)和背景(底色)两种颜色,字符还可以以高亮度和闪烁的方式显示。前景色、背景色、闪烁、高亮等信息被记录在属性字节中。
属性字节的格式:

可以按位设置属性字节,从而配出各种不同的前景色和背景色。
比如:
红底绿字,属性字节为:01000010B;
红底闪烁绿字,属性字节为:11000010B;
红底高亮绿字,属性字节为:01001010B;
黑底白字,属性字节为:00000111B;
白底蓝字,属性字节为:01110001B。
例如:在显示器的0行0列显示红底高亮闪烁绿色的字符串'ABCDEF'
(红底高亮闪烁绿色,属性字节为:11001010B, CAH)
显示缓冲区里的内容为:

注意:闪烁的效果必须在全屏DOS方式下才能看到。
assume cs:codesg, ds:datasg, ss:stacksg
datasg segment
db 'welcome to masm!'
db 2h,24h,71h ;三行文字的颜色
datasg ends stacksg segment stack
db 16 dup (0)
stacksg ends codesg segment start:
mov ax,datasg
mov ds,ax mov ax,stacksg
mov ss,ax
mov sp,16 mov ax,0B872h
mov es,ax mov cx,3 ;三行的显示代码是外层循环三次
mov bx,0 ;记录当前是第几行,也是外层循环的次数
s:
push cx
mov cx,16 ;每行显示16个字符,内存循环16次 mov di,0 ;记录内存循环的次数
s0:
mov al,ds:[di] ;低字节显示文字
mov ah,ds:[bx+16] ;高字节显示颜色属性
mov si,di
add si,si ;一个文字占两个字节
mov es:[si],ax inc di
loop s0 pop cx
mov ax,es
add ax,00ah ;切换到下一行的位置
mov es,ax
inc bx
loop s mov ax,4c00h
int 21h codesg ends end start
最后在DOS界面运行如下:

编程:在屏幕中间分别显示绿色、绿底红色、白底蓝色的字符串'welcome to masm!'的更多相关文章
- [汇编语言]-第九章 在屏幕中间分别显示绿底红色,白底蓝色字符串"welcome to masm!"
;在屏幕中间分别显示绿色,绿底红色,白底蓝色字符串"welcome to masm!" assume cs:codesg,ds:datasg,ss:stacksg datasg s ...
- 编程:在屏幕中间分别显示绿色、绿底红色、白底蓝色的字符串 'welcome to masm!'
body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...
- FPGA驱动LCD显示红绿蓝彩条
实验目的:先简单熟悉LCD灯的驱动和时序图的代码实现.设计功能是让LCD显示红绿蓝三种颜色,即三个彩带.本次实验比较容易实现,主要是对LCD驱动时序图的理解和时序参数的配置. 实验条件:1.LCD原理 ...
- win7系统扩展双屏幕时,如何在两个屏幕下都显示任务栏
扩展屏幕下都显示任务栏!!! win7系统本身无法设置该功能(目前我是不知道) 但可以下载第三方软件来解决该问题. 第一步:Dual Monitor Taskbar 下载软件 下载链接:http:// ...
- char *s = getpass()屏幕不回显示 ,返回输入的字符
char *s = getpass(“please input you name:”)屏幕不回显示 ,返回输入的字符
- dell R730 安装windwos 2008 R2在windows loading files...完成后屏幕无信号(iDrac绿屏)
dell R730 安装windwos 2008 R2在windows loading files...完成后,Starting Windows时屏幕无信号(iDrac绿屏) 解决方法: F2 进行 ...
- win7系统扩展双屏幕时,怎样在两个屏幕下都显示任务栏
扩展屏幕下都显示任务栏!!! win7系统本身无法设置该功能(眼下我是不知道) 但能够下载第三方软件来解决该问题. 第一步:Dual Monitor Taskbar 下载软件 下载链接:http:// ...
- Android 利用代码在屏幕中间位置显示ProgressDialog和ProgressBar
package cc.testprogressdialog; import android.os.Bundle; import android.view.Gravity; import android ...
- 解决github提交commit,contributions不统计显示绿色的问题
最近使用GitHub Desktop时,发现自己好多次的commits都没有被记录在Contributions中,但是点开项目详情里面可以看到自己的commit确实上传成功了,所以就忧伤了,为什么没有 ...
随机推荐
- python语言中的数据类型之字典
数据类型 字典类型dict 用途:记录多个值,列表是索引对应值,而字典是key对应值,其中key对value有描述性 定义方式:在{ }用逗号分隔开多个元素,每个元素都是key:value形式,其中k ...
- HTML 样式兼容不同设备类型
在项目中遇到在屏幕上显示的效果和打印时显示的效果不同,可以使用media属性来指定用于不同的媒介时使用的样式. media属性值: 值 描述 screen 计算机屏幕显示(默认) tty 电传打字机以 ...
- 遍历DOM树,获取所有兄弟节点
获取兄弟节点的常用方法有: 方法 说明 siblings() 选取所有兄弟节点 next() 选取后面兄弟节点 nextAll() 选取所有后面的兄弟节点 nextUntil() 选取所有 ...
- Android中查看SQLite中字段数据的两种方式
方式一:ADB Pull 通过adb pull导出*.db文件到PC的文件夹中,通过可视化工具 SQLiteExpertPers 进行查看.编辑: adb pull /data/data/com.jo ...
- pytest 单元测试
pytest简介 pytest 是python的一种单元测试框架,它非常的简洁.清晰. pytest 安装 pip install -U pytest 查看pytest版本 pytest --vers ...
- thread == 票池
public class ThreadDemo2 { public static void main(String[] args){ TicketPool tp = new TicketPool(); ...
- 如何设置java环境变量
以安装目录是E:\Program Files\Java\jDK1.7.0为例:
- C#中属性和字段的区别
属性和字段的区别 在C#中,我们可以非常自由的.毫无限制的访问公有字段,但在一些场合中,我们可能希望限制只能给字段赋于某个范围的值.或是要求字段只能读或只能写,或是在改变字段时能改变对象的其他一些状态 ...
- 吴裕雄 python神经网络 手写数字图片识别(5)
import kerasimport matplotlib.pyplot as pltfrom keras.models import Sequentialfrom keras.layers impo ...
- 用R理解统计学
1.随机变量( random variable)概念的引入 该数据来自杰克逊实验室.2组数据,每组12只老鼠,一组普通食物,另一组高脂肪(hf)饮食.几周后,科学家们称了每只老鼠的体重,得到了这个数据 ...