内存地址空间种B8000H~BFFFH32KB空间,称为80x25彩色字符模式显示缓冲区,向这个地址写入的数据会立即出现在显示器上。显示缓冲区分为8页,每页4KB(约等于4000B),显示器可以显示任意一页的内容,一般情况下显示第0页的内容。
讲的通俗点如下:

即,如上窗口大小为160x25个字节(4000个字节),每两个字节为一个字符,偶数地址存放字符的ascii码,奇数地址存放字符属性,也就是一行可以存放80个字符一共25行,共可以存放80x25个字符2000个字符。每个字符可以有FF=2^8=256种属性.

0 0 0 0 0 0 0 0 属性占用一个字节共8
7 6 5 4 3 2 1 0

  • 7位代表闪烁效果
  • 6、5、4位代表背景色的rgb=red green blue 红绿蓝
  • 3 高亮
  • 2、1、0 位字符颜色的rgb
    对应颜色设置成1就变成对应颜色
    0010 0100 绿底红字 十六进制 =24
    0100 0001 红底蓝字 十六进制 =41
    0001 0010 蓝底绿字 十六进制=12
    下面我们来写个简单的用例,首先清理屏幕然后再整个屏幕填充白底黑字0
DATAS SEGMENTDATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码
STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKS
START:MOV AX,DATASMOV DS,AXcall clear_screencall show_strMOV AH,4CHINT 21H
;=============================================
show_str:mov bx,0B800Hmov es,bx;偶数字节为字符,奇数字节为属性mov bx,0mov cx,2000           ;整个屏幕为2000个字符,每个字符2个字节
showStr:mov ax,30H              ;30H为ascii 0mov es:[bx+0],ax       ;把字符给偶数字节   mov ax,01110000B        ;白底黑字mov es:[bx+1],ax      ;把白底黑字的属性给奇数字节add bx,2              ;每循环一次bx+2loop showStr ret
;=============================================
clear_screen:mov bx,0B800H     mov es,bxmov bx,0            ;定义数据要写到哪里去,0B800为显存开始位置mov dx,01110000B     ;01110000B 白底黑字,没有字就是啥都不显示mov cx,2000       ;循环2000次
clearScreen:            ;每次循环把颜色填入对应的位置mov es:[bx],dxadd bx,2loop clearScreenret
CODES ENDSEND START

运行程序即可看到如下效果

8086汇编(7、80x25彩色缓冲区)相关推荐

  1. 8086汇编寄存器及指令汇总

    1   寄存器的分类 通用寄存器: ax,bx,cx,dx,(ah,al,bh,bl,ch,cl,dh,dl): sp,bp,si,di 指令寄存器: ip 标志寄存器: FR 段寄存器: cs,ds ...

  2. 【8086汇编基础】05--常用函数库文件--emu8086.inc

    8086汇编语言初学者教程(第5部分) 常用函数库 - emu8086.inc 通过引用一些常用函数,可以使你编程更加方便.在你的程序中使用其他文件中的函数的方法是INCLUDE后面接上你要引用的文件 ...

  3. 8086 汇编指令手册查询(转)

    8086 汇编指令手册查询,编语言是一种面向机器的语言.它能够利用计算机所在硬件性并能直接控制硬件,在微型计算机系统的开发应用和过程控制和特别受到重视. 一.数据传输指令 -------------- ...

  4. 8086汇编学习小记-王爽汇编语言实验12

    8086汇编学习小记-王爽汇编语言实验12 0号中断处理程序,开始安装在0000:0200处的程序最后用死循环导致显示不出'divided error',改成直接退出就正常显示了.注意修改ss,sp之 ...

  5. 8086汇编与c++编译器就内存方面的感想

    8086汇编中可以手动分配栈内存,没有堆内存的概念,而c++编译器中栈是系统分配的,堆是手动分配的.

  6. c++ 模板类实现堆栈实验报告_编译原理——小型类C编译器的设计和实现(生成8086汇编代码)之1:问题定义以及总体功能...

    前面花了两篇文章来介绍词法分析和语法分析,接下来才是比较有意思的部分--一个小型类C编译器的设计和实现(其实是编译原理的课程设计啦!~)我用的是python2.7.13+PyQt来做的...事实上,正 ...

  7. 【汇编语言】8086汇编,快速搞定各种寻址方式:立即数寻址 / 寄存器寻址 / 存储器寻址

    0 前言 众所周知,对于8086汇编语言,有几大寻址方式,不过我觉得这个好墨迹,会用就可以了,为什么命名这么多,这次只说本质,不说命名,至于命名,还是得知道,毕竟是大部分人公认的,不能反抗这点哦,但是 ...

  8. 80×86汇编常用指令

    80×86汇编常用指令 一.数据传送指令 1. 通用数据传送指令 简写 英文全称 执行操作 MOV move 传送 MOVSX move with sign-extend 带符号扩展传送 MOVZX ...

  9. 8086汇编学习小记-1

    8086汇编学习小记-1 View Code assume cs : codesg, ds : datasg, ss : stacksgdatasg SEGMENT... datasg ENDSsta ...

最新文章

  1. Java项目打包部署war文件
  2. chart 模板 - 每天5分钟玩转 Docker 容器技术(165)
  3. python画一片树叶_python画一片绿叶给你
  4. 进入“高画质手游时代”?《天谕》手游首次采用的这项技术有多强大
  5. JS开源框架Stimulus:让web应用在移动端达到原生体验!
  6. 想学 Python?那这套教程再适合你不过了!!
  7. python变量分类_Python 入门系列 —— 5. 三大变量类型介绍
  8. 判断数正负(信息学奥赛一本通-T1039)
  9. 设计素材|C4D别高质量模型包
  10. python入门教程pdf-python基础教程:《Python编程无师自通》PDF版百度云下载
  11. riskv的linux模拟环境,开启你RISC-V的开发之旅-RISC-V的linux模拟环境搭建整理和总结-EDA365电子论坛通信数码-人工智能-计算机-半导体-手机家电消费电子硬件门户网站...
  12. 360安全卫士默认浏览器设置 360默认浏览器设置 锁定浏览器
  13. 【Python】Pandas DataFrame 一维表二维表的转换
  14. 【模拟电路】温度对器件特性的影响
  15. iOS音乐播放器实现后台播放锁屏界面控制
  16. Kindle已连接WiFi网络,但无法连接互联网的解决办法
  17. 申请阿里云服务器并配置SSL证书(附带微信公众号配置服务器)
  18. android系统刷机,安卓手机刷机完全攻略 从此不再怕刷机
  19. selenium实现自动播放音乐
  20. asp.net ajax1.0基础回顾(二):经典模式

热门文章

  1. 宽带和流量是分开的吗_带宽与宽带的区别。
  2. 最终幻想13-2时钟迷题破解工具
  3. EPICS记录参考--Waveform记录(waveform)
  4. Office系列办公软件中的一款-Microsoft Excel提供下载
  5. bind dlz mysql rpm_智能DNS --BIND DLZ+MYSQL
  6. 第二章——Swift语言
  7. web接口测试之GET与POST请求
  8. linux 缩小硬盘镜像,缩小qcow2格式kvm虚拟镜像磁盘大小[转]
  9. RK61键盘使用说明书
  10. 平台为王:Microsoft Office System为什么成功?